From fc32dbe8abf22d7d871cc4aeffad6dcc25461a22 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 12:45:26 -0500 Subject: [PATCH 01/73] fix: workflow quoting fix for act_runner shell compatibility MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Synced from moko-platform — removes double quotes that act_runner interprets literally, breaking git clone URL construction. Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) --- .mokogitea/workflows/pre-release.yml | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/.mokogitea/workflows/pre-release.yml b/.mokogitea/workflows/pre-release.yml index 1a9eeef0..31540a74 100644 --- a/.mokogitea/workflows/pre-release.yml +++ b/.mokogitea/workflows/pre-release.yml @@ -64,20 +64,19 @@ jobs: MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting run: | # Use pre-installed /opt/moko-platform if available (updated by cron every 6h) - if [ -f “/opt/moko-platform/cli/version_bump.php” ] && [ -f “/opt/moko-platform/vendor/autoload.php” ]; then - echo “Using pre-installed /opt/moko-platform” - echo “MOKO_CLI=/opt/moko-platform/cli” >> “$GITHUB_ENV” + if [ -f /opt/moko-platform/cli/version_bump.php ] && [ -f /opt/moko-platform/vendor/autoload.php ]; then + echo Using pre-installed /opt/moko-platform + echo MOKO_CLI=/opt/moko-platform/cli >> $GITHUB_ENV else - echo “Falling back to fresh clone” - if ! command -v composer &> /dev/null; then - sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer >/dev/null 2>&1 + echo Falling back to fresh clone + if ! command -v composer > /dev/null 2>&1; then + sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer > /dev/null 2>&1 fi rm -rf /tmp/moko-platform-api - git clone --depth 1 --branch main --quiet \ - “https://x-access-token:${MOKO_CLONE_TOKEN}@${MOKO_CLONE_HOST}/moko-platform.git” \ - /tmp/moko-platform-api + CLONE_URL=https://x-access-token:${MOKO_CLONE_TOKEN}@${MOKO_CLONE_HOST}/moko-platform.git + git clone --depth 1 --branch main --quiet $CLONE_URL /tmp/moko-platform-api cd /tmp/moko-platform-api && composer install --no-dev --no-interaction --quiet - echo “MOKO_CLI=/tmp/moko-platform-api/cli” >> “$GITHUB_ENV” + echo MOKO_CLI=/tmp/moko-platform-api/cli >> $GITHUB_ENV fi - name: Detect platform @@ -118,6 +117,9 @@ jobs: --path . --version "$VERSION" --branch "${{ github.ref_name }}" --stability "$STABILITY" 2>/dev/null || true php ${MOKO_CLI}/version_check.php --path . --fix 2>/dev/null || true + # Ensure licensing tags (updateservers, dlid) if enabled in manifest.xml + php ${MOKO_CLI}/manifest_licensing.php --path . --fix 2>/dev/null || true + # Append suffix for output if [ -n "$SUFFIX" ]; then VERSION="${VERSION}${SUFFIX}" From 2d0ec0bca8c56bf34d9d01dfcb543c7bedafd16b Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sat, 6 Jun 2026 17:48:18 +0000 Subject: [PATCH 02/73] chore(version): pre-release bump to 02.34.17-dev [skip ci] --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0b00d788..2b7662ea 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.16 + VERSION: 02.34.17 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> From 55b4f994dc52a7e5ac90967aa84d3eb2c8a4c1fa Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 12:54:08 -0500 Subject: [PATCH 03/73] fix: add manifest_element.php to pre-installed tools check --- .mokogitea/workflows/pre-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.mokogitea/workflows/pre-release.yml b/.mokogitea/workflows/pre-release.yml index 31540a74..86908c20 100644 --- a/.mokogitea/workflows/pre-release.yml +++ b/.mokogitea/workflows/pre-release.yml @@ -64,7 +64,7 @@ jobs: MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting run: | # Use pre-installed /opt/moko-platform if available (updated by cron every 6h) - if [ -f /opt/moko-platform/cli/version_bump.php ] && [ -f /opt/moko-platform/vendor/autoload.php ]; then + if [ -f /opt/moko-platform/cli/version_bump.php ] && [ -f /opt/moko-platform/cli/manifest_element.php ] && [ -f /opt/moko-platform/vendor/autoload.php ]; then echo Using pre-installed /opt/moko-platform echo MOKO_CLI=/opt/moko-platform/cli >> $GITHUB_ENV else From f586175be2cde9210631be680f4ef97807230351 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sat, 6 Jun 2026 18:00:43 +0000 Subject: [PATCH 04/73] chore(version): pre-release bump to 02.34.18-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- .../plg_webservices_perfectpublisher/perfectpublisher.xml | 2 +- .../plg_webservices_perfectpublisher/services/provider.php | 2 +- .../src/Extension/PerfectPublisherApi.php | 2 +- source/pkg_mokowaas.xml | 2 +- 45 files changed, 55 insertions(+), 55 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 57839505..392ff8ef 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.16 + 02.34.18 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index efd283bb..90d93b17 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.16 +# VERSION: 02.34.18 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ce54691..80f6f3fb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.16 + VERSION: 02.34.18 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index a0892a85..3e06c0f5 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.16 + VERSION: 02.34.18 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 24afc444..4484f8b3 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.16 + VERSION: 02.34.18 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index 206a207e..9f5b34ff 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.16 + VERSION: 02.34.18 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index 2b7662ea..3051a8c8 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.17 + VERSION: 02.34.18 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index fd3f006e..fbc2f906 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.16 +VERSION: 02.34.18 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index 1acd4081..77da2c17 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.16 + VERSION: 02.34.18 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.16) +# MokoWaaS Build Guide (VERSION: 02.34.18) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index c9772fb3..bf158ab7 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.16 + VERSION: 02.34.18 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.16) +# MokoWaaS Configuration Guide (VERSION: 02.34.18) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index b2589600..62e80db5 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.16 + VERSION: 02.34.18 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.16) +# MokoWaaS Installation Guide (VERSION: 02.34.18) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index fecfa1c3..a469b062 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.16 + VERSION: 02.34.18 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.16) +# MokoWaaS Operations Guide (VERSION: 02.34.18) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index 8551b246..ee0b36a7 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.16 + VERSION: 02.34.18 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.16) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.18) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index 8ed781df..69f46aca 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.16 + VERSION: 02.34.18 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.16) +# MokoWaaS Testing Guide (VERSION: 02.34.18) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index a32adde1..83156bb9 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.16 + VERSION: 02.34.18 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.16) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.18) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index cdf5d514..c9770a80 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.16 + VERSION: 02.34.18 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.16) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.18) ## Introduction diff --git a/docs/index.md b/docs/index.md index e57a964c..6bb6d5f0 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.16 + VERSION: 02.34.18 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.16) +# MokoWaaS Documentation Index (VERSION: 02.34.18) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index bbd5b95c..a70150a1 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.16 + VERSION: 02.34.18 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.16) +# MokoWaaS Plugin Overview (VERSION: 02.34.18) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index ea96f1bd..95ca3c81 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.16 +VERSION: 02.34.18 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index c16922d4..1c29323c 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.15 + 02.34.18-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index 4909e800..74447233 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.15 + 02.34.18-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index c274468c..cb171cca 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.15 + 02.34.18-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index be8f768d..ebd61daa 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.15 + 02.34.18-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index 571f575f..27169525 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.15 + 02.34.18-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 55918988..2bddde9e 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.16 + * VERSION: 02.34.18 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index d7e1ac4b..478a2f94 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.16 + * VERSION: 02.34.18 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index 556ea2ed..13b00e29 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.15 + 02.34.18-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index 7a04de93..2f132437 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.16 + * VERSION: 02.34.18 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index 788578f1..07979ced 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.16 + * VERSION: 02.34.18 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index 29d3f160..8e4bdee9 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.15 + 02.34.18-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index b9c8e69a..b915eeb9 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.15 + 02.34.18-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index 38a213d1..a6598db9 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.15 + 02.34.18-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index 83cf31c3..2f21b2ac 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.15 + 02.34.18-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index 16e9028c..e5444e47 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.15 + 02.34.18-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index 2a6a31aa..028ee942 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.15 + 02.34.18-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index d2ed8872..6f0b7c7b 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.15 + 02.34.18-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index 89793892..1549fe29 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.08 + * VERSION: 02.34.18 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 32eb6c7b..10c38144 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.15 + 02.34.18-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index 843725ab..3851cb8a 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.08 + * VERSION: 02.34.18 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index 8360bf29..93d5100a 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.08 + * VERSION: 02.34.18 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index cc42a073..3498ec0b 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.15 + 02.34.18-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml index 62f92a83..05a77685 100644 --- a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml +++ b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.15 + 02.34.18-dev Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds. Moko\Plugin\WebServices\PerfectPublisher diff --git a/source/packages/plg_webservices_perfectpublisher/services/provider.php b/source/packages/plg_webservices_perfectpublisher/services/provider.php index eaac60ed..dce6c39f 100644 --- a/source/packages/plg_webservices_perfectpublisher/services/provider.php +++ b/source/packages/plg_webservices_perfectpublisher/services/provider.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/services/provider.php - * VERSION: 02.34.16 + * VERSION: 02.34.18 * BRIEF: DI service provider for Perfect Publisher Web Services plugin */ diff --git a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php index a17ef9a7..63cfcaca 100644 --- a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php +++ b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php - * VERSION: 02.34.16 + * VERSION: 02.34.18 * BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet) */ diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index e6abb217..4951fff5 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.15 + 02.34.18-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From fa893e87135ce277efbfa217fcf6ecec24721e15 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sat, 6 Jun 2026 18:42:12 +0000 Subject: [PATCH 05/73] chore(version): pre-release bump to 02.34.19-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- .../plg_webservices_perfectpublisher/perfectpublisher.xml | 2 +- .../plg_webservices_perfectpublisher/services/provider.php | 2 +- .../src/Extension/PerfectPublisherApi.php | 2 +- source/pkg_mokowaas.xml | 2 +- 45 files changed, 55 insertions(+), 55 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 392ff8ef..bae2ef94 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.18 + 02.34.19 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 90d93b17..f9eef1e7 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.18 +# VERSION: 02.34.19 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 80f6f3fb..abefb807 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.18 + VERSION: 02.34.19 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 3e06c0f5..e9042b21 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.18 + VERSION: 02.34.19 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 4484f8b3..7068ad52 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.18 + VERSION: 02.34.19 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index 9f5b34ff..8a5d31bd 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.18 + VERSION: 02.34.19 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index 3051a8c8..ea291e23 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.18 + VERSION: 02.34.19 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index fbc2f906..f572646a 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.18 +VERSION: 02.34.19 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index 77da2c17..e4e34c76 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.18 + VERSION: 02.34.19 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.18) +# MokoWaaS Build Guide (VERSION: 02.34.19) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index bf158ab7..2851652c 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.18 + VERSION: 02.34.19 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.18) +# MokoWaaS Configuration Guide (VERSION: 02.34.19) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index 62e80db5..d78032a0 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.18 + VERSION: 02.34.19 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.18) +# MokoWaaS Installation Guide (VERSION: 02.34.19) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index a469b062..0c675e31 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.18 + VERSION: 02.34.19 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.18) +# MokoWaaS Operations Guide (VERSION: 02.34.19) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index ee0b36a7..e8f8ebdf 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.18 + VERSION: 02.34.19 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.18) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.19) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index 69f46aca..7d1c1646 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.18 + VERSION: 02.34.19 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.18) +# MokoWaaS Testing Guide (VERSION: 02.34.19) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index 83156bb9..4042463f 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.18 + VERSION: 02.34.19 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.18) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.19) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index c9770a80..f05d70bd 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.18 + VERSION: 02.34.19 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.18) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.19) ## Introduction diff --git a/docs/index.md b/docs/index.md index 6bb6d5f0..1110743f 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.18 + VERSION: 02.34.19 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.18) +# MokoWaaS Documentation Index (VERSION: 02.34.19) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index a70150a1..bf1b9241 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.18 + VERSION: 02.34.19 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.18) +# MokoWaaS Plugin Overview (VERSION: 02.34.19) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index 95ca3c81..3c3e7f75 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.18 +VERSION: 02.34.19 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index 1c29323c..1f5bca43 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.18-dev + 02.34.19-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index 74447233..376f28bf 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.18-dev + 02.34.19-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index cb171cca..e618a9fb 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.18-dev + 02.34.19-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index ebd61daa..53455b9b 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.18-dev + 02.34.19-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index 27169525..dbd1a210 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.18-dev + 02.34.19-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 2bddde9e..74f1a2fd 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.18 + * VERSION: 02.34.19 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index 478a2f94..2e0a487d 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.18 + * VERSION: 02.34.19 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index 13b00e29..46e554de 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.18-dev + 02.34.19-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index 2f132437..148f9717 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.18 + * VERSION: 02.34.19 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index 07979ced..7a755297 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.18 + * VERSION: 02.34.19 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index 8e4bdee9..395e8a01 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.18-dev + 02.34.19-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index b915eeb9..1168fe5e 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.18-dev + 02.34.19-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index a6598db9..ec5d0756 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.18-dev + 02.34.19-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index 2f21b2ac..08d3ef1f 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.18-dev + 02.34.19-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index e5444e47..235682c5 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.18-dev + 02.34.19-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index 028ee942..ef6be18c 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.18-dev + 02.34.19-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index 6f0b7c7b..e0b019b4 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.18-dev + 02.34.19-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index 1549fe29..4c1364f2 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.18 + * VERSION: 02.34.19 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 10c38144..4353eab9 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.18-dev + 02.34.19-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index 3851cb8a..28957d67 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.18 + * VERSION: 02.34.19 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index 93d5100a..fa9c8d03 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.18 + * VERSION: 02.34.19 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index 3498ec0b..626276a6 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.18-dev + 02.34.19-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml index 05a77685..8a5b05ee 100644 --- a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml +++ b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.18-dev + 02.34.19-dev Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds. Moko\Plugin\WebServices\PerfectPublisher diff --git a/source/packages/plg_webservices_perfectpublisher/services/provider.php b/source/packages/plg_webservices_perfectpublisher/services/provider.php index dce6c39f..1ca20ad7 100644 --- a/source/packages/plg_webservices_perfectpublisher/services/provider.php +++ b/source/packages/plg_webservices_perfectpublisher/services/provider.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/services/provider.php - * VERSION: 02.34.18 + * VERSION: 02.34.19 * BRIEF: DI service provider for Perfect Publisher Web Services plugin */ diff --git a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php index 63cfcaca..b0ac9b98 100644 --- a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php +++ b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php - * VERSION: 02.34.18 + * VERSION: 02.34.19 * BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet) */ diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index 4951fff5..44b648c7 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.18-dev + 02.34.19-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From 1229f111e86565313b27d88b52d60b5e9cb4e695 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 14:06:06 -0500 Subject: [PATCH 06/73] docs: update CHANGELOG for 02.35.00 release --- CHANGELOG.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index abefb807..6e66e65d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,36 @@ ## [Unreleased] +## [02.35.00] - 2026-06-06 + +### Added +- Core plugin stripped to heartbeat-only config (~5,500 lines removed) +- Extension catalog (catalog.xml) with update server discovery (#186) +- Download key preservation across Joomla updates (#187) +- Remote login endpoint for MokoWaaSBase auto-login +- Provision reset API for new client setup (hits, versions, tokens) +- Setup required banner after provision reset +- Support verification PIN (MOKO-XXXX-XXXX) +- mod_mokowaas_categories — auto-category tree menu (#184) +- Cache/temp split button in status bar +- Dashboard version tiles for component and modules +- Monitor plugin sends full health payload to MokoWaaSBase +- Firewall: block_frontend_superuser, own trusted_ip_entry.xml +- DevTools: reset download keys toggle + +### Changed +- Renamed src/ to source/ (#188) +- Service classes relocated to owning plugins +- API controller execute() signatures fixed (#183) +- Joomla 5/6 event compatibility in DevTools and Monitor +- Dead placeholder resolver removed from install script + +### Fixed +- Firewall subform paths after core cleanup +- Missing Security Headers language strings + +## [02.34.00] - 2026-06-04 + ### Added - Database Tools view — table status, optimize, repair, session purge (#127) - Cache Cleanup view — directory size reporting and one-click cleanup (#128) From caa1a2a96e416aeccbcb4b1bf92952491805efe5 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sat, 6 Jun 2026 19:07:11 +0000 Subject: [PATCH 07/73] chore(version): pre-release bump to 02.34.20-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- .../plg_webservices_perfectpublisher/perfectpublisher.xml | 2 +- .../plg_webservices_perfectpublisher/services/provider.php | 2 +- .../src/Extension/PerfectPublisherApi.php | 2 +- source/pkg_mokowaas.xml | 2 +- 45 files changed, 55 insertions(+), 55 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index bae2ef94..901266c2 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.19 + 02.34.20 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index f9eef1e7..d695f558 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.19 +# VERSION: 02.34.20 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e66e65d..5883c57a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.19 + VERSION: 02.34.20 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index e9042b21..04df2f63 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.19 + VERSION: 02.34.20 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 7068ad52..ab0f227b 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.19 + VERSION: 02.34.20 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index 8a5d31bd..405be1f8 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.19 + VERSION: 02.34.20 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index ea291e23..2ee1a030 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.19 + VERSION: 02.34.20 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index f572646a..0f23bd47 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.19 +VERSION: 02.34.20 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index e4e34c76..3eb445b7 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.19 + VERSION: 02.34.20 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.19) +# MokoWaaS Build Guide (VERSION: 02.34.20) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index 2851652c..14b45a39 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.19 + VERSION: 02.34.20 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.19) +# MokoWaaS Configuration Guide (VERSION: 02.34.20) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index d78032a0..0ccdc97a 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.19 + VERSION: 02.34.20 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.19) +# MokoWaaS Installation Guide (VERSION: 02.34.20) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index 0c675e31..89597065 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.19 + VERSION: 02.34.20 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.19) +# MokoWaaS Operations Guide (VERSION: 02.34.20) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index e8f8ebdf..591f052b 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.19 + VERSION: 02.34.20 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.19) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.20) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index 7d1c1646..93726dbc 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.19 + VERSION: 02.34.20 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.19) +# MokoWaaS Testing Guide (VERSION: 02.34.20) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index 4042463f..37dbb0a5 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.19 + VERSION: 02.34.20 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.19) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.20) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index f05d70bd..e2876a53 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.19 + VERSION: 02.34.20 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.19) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.20) ## Introduction diff --git a/docs/index.md b/docs/index.md index 1110743f..3157bd81 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.19 + VERSION: 02.34.20 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.19) +# MokoWaaS Documentation Index (VERSION: 02.34.20) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index bf1b9241..32fe9178 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.19 + VERSION: 02.34.20 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.19) +# MokoWaaS Plugin Overview (VERSION: 02.34.20) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index 3c3e7f75..1d252900 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.19 +VERSION: 02.34.20 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index 1f5bca43..b24dbee7 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.19-dev + 02.34.20-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index 376f28bf..ce37afa6 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.19-dev + 02.34.20-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index e618a9fb..10854fe9 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.19-dev + 02.34.20-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index 53455b9b..5ba39272 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.19-dev + 02.34.20-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index dbd1a210..001aa70c 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.19-dev + 02.34.20-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 74f1a2fd..12233ce1 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.19 + * VERSION: 02.34.20 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index 2e0a487d..35d6a7e7 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.19 + * VERSION: 02.34.20 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index 46e554de..30217de8 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.19-dev + 02.34.20-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index 148f9717..8a9a7480 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.19 + * VERSION: 02.34.20 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index 7a755297..b1fb999c 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.19 + * VERSION: 02.34.20 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index 395e8a01..19bc323b 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.19-dev + 02.34.20-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index 1168fe5e..6d67f9b3 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.19-dev + 02.34.20-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index ec5d0756..ed00f614 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.19-dev + 02.34.20-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index 08d3ef1f..aaa0b48b 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.19-dev + 02.34.20-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index 235682c5..5918d18d 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.19-dev + 02.34.20-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index ef6be18c..b4b9d3ca 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.19-dev + 02.34.20-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index e0b019b4..ecf761f9 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.19-dev + 02.34.20-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index 4c1364f2..c8030ac9 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.19 + * VERSION: 02.34.20 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 4353eab9..d004d4ca 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.19-dev + 02.34.20-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index 28957d67..9ca3c518 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.19 + * VERSION: 02.34.20 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index fa9c8d03..33b3ea56 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.19 + * VERSION: 02.34.20 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index 626276a6..0fe7e43e 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.19-dev + 02.34.20-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml index 8a5b05ee..c714f066 100644 --- a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml +++ b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.19-dev + 02.34.20-dev Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds. Moko\Plugin\WebServices\PerfectPublisher diff --git a/source/packages/plg_webservices_perfectpublisher/services/provider.php b/source/packages/plg_webservices_perfectpublisher/services/provider.php index 1ca20ad7..3dedb148 100644 --- a/source/packages/plg_webservices_perfectpublisher/services/provider.php +++ b/source/packages/plg_webservices_perfectpublisher/services/provider.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/services/provider.php - * VERSION: 02.34.19 + * VERSION: 02.34.20 * BRIEF: DI service provider for Perfect Publisher Web Services plugin */ diff --git a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php index b0ac9b98..3571d722 100644 --- a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php +++ b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php - * VERSION: 02.34.19 + * VERSION: 02.34.20 * BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet) */ diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index 44b648c7..9b8e8e8f 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.19-dev + 02.34.20-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From 1a33542f20a4967aaa5c30b6d302ae53aa4e5e62 Mon Sep 17 00:00:00 2001 From: Jonathan Miller <1+jmiller@noreply.git.mokoconsulting.tech> Date: Sat, 6 Jun 2026 19:48:07 +0000 Subject: [PATCH 08/73] chore: sync .mokogitea/workflows/pre-release.yml from moko-platform [skip ci] --- .mokogitea/workflows/pre-release.yml | 486 +++++++++++++-------------- 1 file changed, 243 insertions(+), 243 deletions(-) diff --git a/.mokogitea/workflows/pre-release.yml b/.mokogitea/workflows/pre-release.yml index 86908c20..9615a4ea 100644 --- a/.mokogitea/workflows/pre-release.yml +++ b/.mokogitea/workflows/pre-release.yml @@ -1,243 +1,243 @@ -# Copyright (C) 2026 Moko Consulting -# -# SPDX-License-Identifier: GPL-3.0-or-later -# -# FILE INFORMATION -# DEFGROUP: Gitea.Workflow -# INGROUP: moko-platform.Release -# REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform -# PATH: /templates/workflows/universal/pre-release.yml.template -# VERSION: 05.01.00 -# BRIEF: Manual pre-release -- builds dev/alpha/beta/rc packages from any branch - -name: "Universal: Pre-Release" - -on: - pull_request: - types: [closed] - branches: - - dev - pull_request_target: - types: [synchronize, opened, reopened] - branches: - - main - workflow_dispatch: - inputs: - stability: - description: 'Pre-release channel' - required: true - type: choice - options: - - development - - alpha - - beta - - release-candidate - -permissions: - contents: write - -env: - GITEA_URL: ${{ vars.GITEA_URL || 'https://git.mokoconsulting.tech' }} - GITEA_ORG: ${{ vars.GITEA_ORG || github.repository_owner }} - GITEA_REPO: ${{ vars.GITEA_REPO || github.event.repository.name }} - -jobs: - build: - name: "Build Pre-Release (${{ inputs.stability || 'development' }})" - runs-on: release - if: >- - github.event_name == 'workflow_dispatch' || - (github.event_name == 'pull_request' && github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'dev') || - (github.event_name == 'pull_request_target' && github.event.pull_request.base.ref == 'main') - - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - token: ${{ secrets.MOKOGITEA_TOKEN }} - ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || '' }} - - - name: Setup moko-platform tools - env: - MOKO_CLONE_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }} - MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting - run: | - # Use pre-installed /opt/moko-platform if available (updated by cron every 6h) - if [ -f /opt/moko-platform/cli/version_bump.php ] && [ -f /opt/moko-platform/cli/manifest_element.php ] && [ -f /opt/moko-platform/vendor/autoload.php ]; then - echo Using pre-installed /opt/moko-platform - echo MOKO_CLI=/opt/moko-platform/cli >> $GITHUB_ENV - else - echo Falling back to fresh clone - if ! command -v composer > /dev/null 2>&1; then - sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer > /dev/null 2>&1 - fi - rm -rf /tmp/moko-platform-api - CLONE_URL=https://x-access-token:${MOKO_CLONE_TOKEN}@${MOKO_CLONE_HOST}/moko-platform.git - git clone --depth 1 --branch main --quiet $CLONE_URL /tmp/moko-platform-api - cd /tmp/moko-platform-api && composer install --no-dev --no-interaction --quiet - echo MOKO_CLI=/tmp/moko-platform-api/cli >> $GITHUB_ENV - fi - - - name: Detect platform - id: platform - run: | - php ${MOKO_CLI}/manifest_read.php --path . --github-output - - - name: Resolve metadata and bump version - id: meta - run: | - # Auto-detect stability: RC for PRs targeting main, else use input or default to development - if [ "${{ github.event_name }}" = "pull_request_target" ] && [ "${{ github.event.pull_request.base.ref }}" = "main" ]; then - STABILITY="release-candidate" - else - STABILITY="${{ inputs.stability || 'development' }}" - fi - - case "$STABILITY" in - development) SUFFIX="-dev"; TAG="development" ;; - alpha) SUFFIX="-alpha"; TAG="alpha" ;; - beta) SUFFIX="-beta"; TAG="beta" ;; - release-candidate) SUFFIX="-rc"; TAG="release-candidate" ;; - esac - - # Bump version via CLI: patch for dev/alpha/beta, minor for RC - case "$STABILITY" in - release-candidate) BUMP="minor" ;; - *) BUMP="patch" ;; - esac - - php ${MOKO_CLI}/version_bump.php --path . $([ "$BUMP" = "minor" ] && echo "--minor") 2>/dev/null || true - - # Set stability suffix and verify consistency - VERSION=$(php ${MOKO_CLI}/version_read.php --path . 2>/dev/null || echo "00.00.01") - VERSION=$(echo "$VERSION" | sed 's/-\(dev\|alpha\|beta\|rc\)$//') - - php ${MOKO_CLI}/version_set_platform.php \ - --path . --version "$VERSION" --branch "${{ github.ref_name }}" --stability "$STABILITY" 2>/dev/null || true - php ${MOKO_CLI}/version_check.php --path . --fix 2>/dev/null || true - - # Ensure licensing tags (updateservers, dlid) if enabled in manifest.xml - php ${MOKO_CLI}/manifest_licensing.php --path . --fix 2>/dev/null || true - - # Append suffix for output - if [ -n "$SUFFIX" ]; then - VERSION="${VERSION}${SUFFIX}" - fi - - # Commit version bump - git config --local user.email "gitea-actions[bot]@mokoconsulting.tech" - git config --local user.name "gitea-actions[bot]" - git remote set-url origin "https://x-access-token:${{ secrets.MOKOGITEA_TOKEN }}@git.mokoconsulting.tech/${{ github.repository }}.git" - git add -A - git diff --cached --quiet || { - git commit -m "chore(version): pre-release bump to ${VERSION} [skip ci]" - git push origin HEAD 2>&1 - } - - # Auto-detect element via manifest_element.php - php ${MOKO_CLI}/manifest_element.php \ - --path . --version "$VERSION" --stability "$STABILITY" \ - --repo "${GITEA_REPO}" --github-output - - # Read back element outputs - EXT_ELEMENT=$(grep '^ext_element=' "$GITHUB_OUTPUT" | tail -1 | cut -d= -f2) - ZIP_NAME=$(grep '^zip_name=' "$GITHUB_OUTPUT" | tail -1 | cut -d= -f2) - [ -z "$EXT_ELEMENT" ] && EXT_ELEMENT=$(echo "${GITEA_REPO}" | tr '[:upper:]' '[:lower:]' | tr -d ' -') - [ -z "$ZIP_NAME" ] && ZIP_NAME="${EXT_ELEMENT}-${VERSION}.zip" - - echo "version=${VERSION}" >> "$GITHUB_OUTPUT" - echo "stability=${STABILITY}" >> "$GITHUB_OUTPUT" - echo "suffix=${SUFFIX}" >> "$GITHUB_OUTPUT" - echo "tag=${TAG}" >> "$GITHUB_OUTPUT" - echo "zip_name=${ZIP_NAME}" >> "$GITHUB_OUTPUT" - echo "ext_element=${EXT_ELEMENT}" >> "$GITHUB_OUTPUT" - - echo "=== Pre-Release: ${EXT_ELEMENT} ${VERSION}${SUFFIX} ===" - - - name: Create release - id: release - run: | - TAG="${{ steps.meta.outputs.tag }}" - VERSION="${{ steps.meta.outputs.version }}" - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - php ${MOKO_CLI}/release_create.php \ - --path . --version "$VERSION" --tag "$TAG" \ - --token "${{ secrets.MOKOGITEA_TOKEN }}" --api-base "$API_BASE" \ - --repo "${GITEA_REPO}" --branch dev --prerelease - - - name: Update release notes from CHANGELOG.md - run: | - TAG="${{ steps.meta.outputs.tag }}" - VERSION="${{ steps.meta.outputs.version }}" - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - - # Extract [Unreleased] section from changelog (everything between [Unreleased] and next ## heading) - if [ -f "CHANGELOG.md" ]; then - NOTES=$(awk '/^## \[Unreleased\]/{found=1; next} /^## \[/{if(found) exit} found{print}' CHANGELOG.md) - [ -z "$NOTES" ] && NOTES="Release ${VERSION}" - else - NOTES="Release ${VERSION}" - fi - - # Update release body via API - RELEASE_ID=$(curl -sf -H "Authorization: token ${{ secrets.MOKOGITEA_TOKEN }}" \ - "${API_BASE}/releases/tags/${TAG}" | python3 -c "import json,sys; print(json.load(sys.stdin).get('id',''))" 2>/dev/null || true) - - if [ -n "$RELEASE_ID" ]; then - python3 -c " - import json, urllib.request - body = open('/dev/stdin').read() - payload = json.dumps({'body': body}).encode() - req = urllib.request.Request( - '${API_BASE}/releases/${RELEASE_ID}', - data=payload, method='PATCH', - headers={ - 'Authorization': 'token ${{ secrets.MOKOGITEA_TOKEN }}', - 'Content-Type': 'application/json' - }) - urllib.request.urlopen(req) - " <<< "$NOTES" - echo "Release notes updated from CHANGELOG.md" - fi - - - name: Build package and upload - id: package - run: | - VERSION="${{ steps.meta.outputs.version }}" - TAG="${{ steps.meta.outputs.tag }}" - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - php ${MOKO_CLI}/release_package.php \ - --path . --version "$VERSION" --tag "$TAG" \ - --token "${{ secrets.MOKOGITEA_TOKEN }}" --api-base "$API_BASE" \ - --repo "${GITEA_REPO}" --output /tmp || true - - # updates.xml is generated dynamically by MokoGitea license server - # No need to build, commit, or sync updates.xml from workflows - - - name: "Delete lesser pre-release channels (cascade)" - continue-on-error: true - run: | - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - TOKEN="${{ secrets.MOKOGITEA_TOKEN }}" - - php ${MOKO_CLI}/release_cascade.php \ - --stability "${{ steps.meta.outputs.stability }}" \ - --token "${TOKEN}" \ - --api-base "${API_BASE}" - - - name: Summary - if: always() - run: | - VERSION="${{ steps.meta.outputs.version }}" - STABILITY="${{ steps.meta.outputs.stability }}" - ZIP_NAME="${{ steps.meta.outputs.zip_name }}" - SHA256="${{ steps.package.outputs.sha256_zip }}" - echo "## Pre-Release Complete" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "| Field | Value |" >> $GITHUB_STEP_SUMMARY - echo "|-------|-------|" >> $GITHUB_STEP_SUMMARY - echo "| Version | \`${VERSION}\` |" >> $GITHUB_STEP_SUMMARY - echo "| Channel | ${STABILITY} |" >> $GITHUB_STEP_SUMMARY - echo "| Package | \`${ZIP_NAME}\` |" >> $GITHUB_STEP_SUMMARY - echo "| SHA-256 | \`${SHA256:-n/a}\` |" >> $GITHUB_STEP_SUMMARY +# Copyright (C) 2026 Moko Consulting +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# FILE INFORMATION +# DEFGROUP: Gitea.Workflow +# INGROUP: moko-platform.Release +# REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform +# PATH: /templates/workflows/universal/pre-release.yml.template +# VERSION: 05.01.00 +# BRIEF: Manual pre-release -- builds dev/alpha/beta/rc packages from any branch + +name: "Universal: Pre-Release" + +on: + pull_request: + types: [closed] + branches: + - dev + pull_request_target: + types: [synchronize, opened, reopened] + branches: + - main + workflow_dispatch: + inputs: + stability: + description: 'Pre-release channel' + required: true + type: choice + options: + - development + - alpha + - beta + - release-candidate + +permissions: + contents: write + +env: + GITEA_URL: ${{ vars.GITEA_URL || 'https://git.mokoconsulting.tech' }} + GITEA_ORG: ${{ vars.GITEA_ORG || github.repository_owner }} + GITEA_REPO: ${{ vars.GITEA_REPO || github.event.repository.name }} + +jobs: + build: + name: "Build Pre-Release (${{ inputs.stability || 'development' }})" + runs-on: release + if: >- + github.event_name == 'workflow_dispatch' || + (github.event_name == 'pull_request' && github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'dev') || + (github.event_name == 'pull_request_target' && github.event.pull_request.base.ref == 'main') + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.MOKOGITEA_TOKEN }} + ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || '' }} + + - name: Setup moko-platform tools + env: + MOKO_CLONE_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }} + MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting + run: | + # Use pre-installed /opt/moko-platform if available (updated by cron every 6h) + if [ -f /opt/moko-platform/cli/version_bump.php ] && [ -f /opt/moko-platform/cli/manifest_element.php ] && [ -f /opt/moko-platform/vendor/autoload.php ]; then + echo Using pre-installed /opt/moko-platform + echo MOKO_CLI=/opt/moko-platform/cli >> $GITHUB_ENV + else + echo Falling back to fresh clone + if ! command -v composer > /dev/null 2>&1; then + sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer > /dev/null 2>&1 + fi + rm -rf /tmp/moko-platform-api + CLONE_URL=https://x-access-token:${MOKO_CLONE_TOKEN}@${MOKO_CLONE_HOST}/moko-platform.git + git clone --depth 1 --branch main --quiet $CLONE_URL /tmp/moko-platform-api + cd /tmp/moko-platform-api && composer install --no-dev --no-interaction --quiet + echo MOKO_CLI=/tmp/moko-platform-api/cli >> $GITHUB_ENV + fi + + - name: Detect platform + id: platform + run: | + php ${MOKO_CLI}/manifest_read.php --path . --github-output + + - name: Resolve metadata and bump version + id: meta + run: | + # Auto-detect stability: RC for PRs targeting main, else use input or default to development + if [ "${{ github.event_name }}" = "pull_request_target" ] && [ "${{ github.event.pull_request.base.ref }}" = "main" ]; then + STABILITY="release-candidate" + else + STABILITY="${{ inputs.stability || 'development' }}" + fi + + case "$STABILITY" in + development) SUFFIX="-dev"; TAG="development" ;; + alpha) SUFFIX="-alpha"; TAG="alpha" ;; + beta) SUFFIX="-beta"; TAG="beta" ;; + release-candidate) SUFFIX="-rc"; TAG="release-candidate" ;; + esac + + # Bump version via CLI: patch for dev/alpha/beta, minor for RC + case "$STABILITY" in + release-candidate) BUMP="minor" ;; + *) BUMP="patch" ;; + esac + + php ${MOKO_CLI}/version_bump.php --path . $([ "$BUMP" = "minor" ] && echo "--minor") 2>/dev/null || true + + # Set stability suffix and verify consistency + VERSION=$(php ${MOKO_CLI}/version_read.php --path . 2>/dev/null || echo "00.00.01") + VERSION=$(echo "$VERSION" | sed 's/-\(dev\|alpha\|beta\|rc\)$//') + + php ${MOKO_CLI}/version_set_platform.php \ + --path . --version "$VERSION" --branch "${{ github.ref_name }}" --stability "$STABILITY" 2>/dev/null || true + php ${MOKO_CLI}/version_check.php --path . --fix 2>/dev/null || true + + # Ensure licensing tags (updateservers, dlid) if enabled in manifest.xml + php ${MOKO_CLI}/manifest_licensing.php --path . --fix 2>/dev/null || true + + # Append suffix for output + if [ -n "$SUFFIX" ]; then + VERSION="${VERSION}${SUFFIX}" + fi + + # Commit version bump + git config --local user.email "gitea-actions[bot]@mokoconsulting.tech" + git config --local user.name "gitea-actions[bot]" + git remote set-url origin "https://x-access-token:${{ secrets.MOKOGITEA_TOKEN }}@git.mokoconsulting.tech/${{ github.repository }}.git" + git add -A + git diff --cached --quiet || { + git commit -m "chore(version): pre-release bump to ${VERSION} [skip ci]" + git push origin HEAD 2>&1 + } + + # Auto-detect element via manifest_element.php + php ${MOKO_CLI}/manifest_element.php \ + --path . --version "$VERSION" --stability "$STABILITY" \ + --repo "${GITEA_REPO}" --github-output + + # Read back element outputs + EXT_ELEMENT=$(grep '^ext_element=' "$GITHUB_OUTPUT" | tail -1 | cut -d= -f2) + ZIP_NAME=$(grep '^zip_name=' "$GITHUB_OUTPUT" | tail -1 | cut -d= -f2) + [ -z "$EXT_ELEMENT" ] && EXT_ELEMENT=$(echo "${GITEA_REPO}" | tr '[:upper:]' '[:lower:]' | tr -d ' -') + [ -z "$ZIP_NAME" ] && ZIP_NAME="${EXT_ELEMENT}-${VERSION}.zip" + + echo "version=${VERSION}" >> "$GITHUB_OUTPUT" + echo "stability=${STABILITY}" >> "$GITHUB_OUTPUT" + echo "suffix=${SUFFIX}" >> "$GITHUB_OUTPUT" + echo "tag=${TAG}" >> "$GITHUB_OUTPUT" + echo "zip_name=${ZIP_NAME}" >> "$GITHUB_OUTPUT" + echo "ext_element=${EXT_ELEMENT}" >> "$GITHUB_OUTPUT" + + echo "=== Pre-Release: ${EXT_ELEMENT} ${VERSION}${SUFFIX} ===" + + - name: Create release + id: release + run: | + TAG="${{ steps.meta.outputs.tag }}" + VERSION="${{ steps.meta.outputs.version }}" + API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" + php ${MOKO_CLI}/release_create.php \ + --path . --version "$VERSION" --tag "$TAG" \ + --token "${{ secrets.MOKOGITEA_TOKEN }}" --api-base "$API_BASE" \ + --repo "${GITEA_REPO}" --branch dev --prerelease + + - name: Update release notes from CHANGELOG.md + run: | + TAG="${{ steps.meta.outputs.tag }}" + VERSION="${{ steps.meta.outputs.version }}" + API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" + + # Extract [Unreleased] section from changelog (everything between [Unreleased] and next ## heading) + if [ -f "CHANGELOG.md" ]; then + NOTES=$(awk '/^## \[Unreleased\]/{found=1; next} /^## \[/{if(found) exit} found{print}' CHANGELOG.md) + [ -z "$NOTES" ] && NOTES="Release ${VERSION}" + else + NOTES="Release ${VERSION}" + fi + + # Update release body via API + RELEASE_ID=$(curl -sf -H "Authorization: token ${{ secrets.MOKOGITEA_TOKEN }}" \ + "${API_BASE}/releases/tags/${TAG}" | python3 -c "import json,sys; print(json.load(sys.stdin).get('id',''))" 2>/dev/null || true) + + if [ -n "$RELEASE_ID" ]; then + python3 -c " + import json, urllib.request + body = open('/dev/stdin').read() + payload = json.dumps({'body': body}).encode() + req = urllib.request.Request( + '${API_BASE}/releases/${RELEASE_ID}', + data=payload, method='PATCH', + headers={ + 'Authorization': 'token ${{ secrets.MOKOGITEA_TOKEN }}', + 'Content-Type': 'application/json' + }) + urllib.request.urlopen(req) + " <<< "$NOTES" + echo "Release notes updated from CHANGELOG.md" + fi + + - name: Build package and upload + id: package + run: | + VERSION="${{ steps.meta.outputs.version }}" + TAG="${{ steps.meta.outputs.tag }}" + API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" + php ${MOKO_CLI}/release_package.php \ + --path . --version "$VERSION" --tag "$TAG" \ + --token "${{ secrets.MOKOGITEA_TOKEN }}" --api-base "$API_BASE" \ + --repo "${GITEA_REPO}" --output /tmp || true + + # updates.xml is generated dynamically by MokoGitea license server + # No need to build, commit, or sync updates.xml from workflows + + - name: "Delete lesser pre-release channels (cascade)" + continue-on-error: true + run: | + API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" + TOKEN="${{ secrets.MOKOGITEA_TOKEN }}" + + php ${MOKO_CLI}/release_cascade.php \ + --stability "${{ steps.meta.outputs.stability }}" \ + --token "${TOKEN}" \ + --api-base "${API_BASE}" + + - name: Summary + if: always() + run: | + VERSION="${{ steps.meta.outputs.version }}" + STABILITY="${{ steps.meta.outputs.stability }}" + ZIP_NAME="${{ steps.meta.outputs.zip_name }}" + SHA256="${{ steps.package.outputs.sha256_zip }}" + echo "## Pre-Release Complete" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "| Field | Value |" >> $GITHUB_STEP_SUMMARY + echo "|-------|-------|" >> $GITHUB_STEP_SUMMARY + echo "| Version | \`${VERSION}\` |" >> $GITHUB_STEP_SUMMARY + echo "| Channel | ${STABILITY} |" >> $GITHUB_STEP_SUMMARY + echo "| Package | \`${ZIP_NAME}\` |" >> $GITHUB_STEP_SUMMARY + echo "| SHA-256 | \`${SHA256:-n/a}\` |" >> $GITHUB_STEP_SUMMARY From 696ffefc1c359b37ad6f8e917730eb3a16e45223 Mon Sep 17 00:00:00 2001 From: Jonathan Miller <1+jmiller@noreply.git.mokoconsulting.tech> Date: Sat, 6 Jun 2026 19:50:33 +0000 Subject: [PATCH 09/73] chore: sync .mokogitea/workflows/auto-release.yml from moko-platform [skip ci] --- .mokogitea/workflows/auto-release.yml | 640 +++++++++++++------------- 1 file changed, 324 insertions(+), 316 deletions(-) diff --git a/.mokogitea/workflows/auto-release.yml b/.mokogitea/workflows/auto-release.yml index 8fa46848..ca404350 100644 --- a/.mokogitea/workflows/auto-release.yml +++ b/.mokogitea/workflows/auto-release.yml @@ -1,316 +1,324 @@ -# Copyright (C) 2026 Moko Consulting -# -# SPDX-License-Identifier: GPL-3.0-or-later -# -# FILE INFORMATION -# DEFGROUP: Gitea.Workflow -# INGROUP: moko-platform.Release -# REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/moko-platform -# PATH: /templates/workflows/universal/auto-release.yml.template -# VERSION: 05.00.00 -# BRIEF: Universal build & release � detects platform from manifest.xml -# -# +========================================================================+ -# | UNIVERSAL BUILD & RELEASE PIPELINE | -# +========================================================================+ -# | | -# | Reads manifest.xml (joomla|dolibarr|generic) to branch logic. | -# | | -# | Platform-specific: | -# | joomla: XML manifest, updates.xml, type-prefixed packages | -# | dolibarr: mod*.class.php, update.txt, dev version reset | -# | generic: README-only, no update stream | -# | | -# +========================================================================+ - -name: "Universal: Build & Release" - -on: - pull_request: - types: [opened, closed] - branches: - - main - workflow_dispatch: - inputs: - action: - description: 'Action to perform' - required: false - type: choice - default: release - options: - - release - - promote-rc - -env: - FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true - GITEA_URL: ${{ vars.GITEA_URL || 'https://git.mokoconsulting.tech' }} - GITEA_ORG: ${{ vars.GITEA_ORG || github.repository_owner }} - GITEA_REPO: ${{ vars.GITEA_REPO || github.event.repository.name }} - -permissions: - contents: write - -jobs: - # ── PR Opened → Rename branch to RC and build RC release ───────────────────── - promote-rc: - name: Promote to RC - runs-on: release - if: >- - (github.event.action == 'opened' && github.event.pull_request.merged != true) || - (github.event_name == 'workflow_dispatch' && inputs.action == 'promote-rc') - - steps: - - name: Checkout repository - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - with: - token: ${{ secrets.MOKOGITEA_TOKEN }} - fetch-depth: 1 - - - name: Setup moko-platform tools - env: - MOKO_CLONE_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }} - MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting - run: | - if ! command -v composer &> /dev/null; then - sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer >/dev/null 2>&1 - fi - rm -rf /tmp/moko-platform-api - git clone --depth 1 --branch main --quiet \ - "https://x-access-token:${MOKO_CLONE_TOKEN}@${MOKO_CLONE_HOST}/moko-platform.git" \ - /tmp/moko-platform-api - cd /tmp/moko-platform-api - composer install --no-dev --no-interaction --quiet - echo "MOKO_CLI=/tmp/moko-platform-api/cli" >> "$GITHUB_ENV" - - - name: Rename branch to rc - run: | - php ${MOKO_CLI}/branch_rename.php \ - --from "${{ github.event.pull_request.head.ref || 'dev' }}" --to rc \ - --token "${{ secrets.MOKOGITEA_TOKEN }}" \ - --api-base "${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" \ - --pr "${{ github.event.pull_request.number }}" - - - name: Checkout rc and configure git - run: | - git fetch origin rc - git checkout rc - git config --local user.email "gitea-actions[bot]@mokoconsulting.tech" - git config --local user.name "gitea-actions[bot]" - git remote set-url origin "https://x-access-token:${{ secrets.MOKOGITEA_TOKEN }}@git.mokoconsulting.tech/${{ github.repository }}.git" - - - name: Publish RC release - run: | - php ${MOKO_CLI}/release_publish.php \ - --path . --stability rc --bump minor --branch rc \ - --token "${{ secrets.MOKOGITEA_TOKEN }}" \ - --skip-update-stream - - - name: Summary - if: always() - run: | - echo "## Promoted to Release Candidate" >> $GITHUB_STEP_SUMMARY - echo "Branch renamed to rc, minor bump, RC release built (updates.xml managed by Gitea Pages)" >> $GITHUB_STEP_SUMMARY - - # ── Merged PR → Build & Release (or promote RC to stable) ──────────────────── - release: - name: Build & Release Pipeline - runs-on: release - if: >- - github.event.pull_request.merged == true || - (github.event_name == 'workflow_dispatch' && inputs.action != 'promote-rc') - - steps: - - name: Checkout repository - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - with: - token: ${{ secrets.MOKOGITEA_TOKEN }} - fetch-depth: 0 - - - name: Configure git for bot pushes - run: | - git config --local user.email "gitea-actions[bot]@mokoconsulting.tech" - git config --local user.name "gitea-actions[bot]" - git remote set-url origin "https://x-access-token:${{ secrets.MOKOGITEA_TOKEN }}@git.mokoconsulting.tech/${{ github.repository }}.git" - - - name: Check for merge conflict markers - run: | - CONFLICTS=$(grep -rn '<<<<<<< \|>>>>>>> \|^=======$' --include='*.php' --include='*.xml' --include='*.css' --include='*.js' --include='*.json' --include='*.md' --include='*.yml' --include='*.yaml' --include='*.ini' --include='*.txt' . 2>/dev/null | grep -v '.git/' || true) - if [ -n "$CONFLICTS" ]; then - echo "::error::Merge conflict markers found - aborting release" - echo "## Release Blocked: Conflict Markers" >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - echo "$CONFLICTS" >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - exit 1 - fi - echo "No conflict markers found" - - - name: Setup moko-platform tools - env: - MOKO_CLONE_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }} - MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting - COMPOSER_AUTH: '{"github-oauth":{"github.com":"${{ secrets.GH_MIRROR_TOKEN }}"}}' - run: | - if ! command -v composer &> /dev/null; then - sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer >/dev/null 2>&1 - fi - rm -rf /tmp/moko-platform-api - git clone --depth 1 --branch main --quiet \ - "https://x-access-token:${MOKO_CLONE_TOKEN}@${MOKO_CLONE_HOST}/moko-platform.git" \ - /tmp/moko-platform-api - cd /tmp/moko-platform-api - composer install --no-dev --no-interaction --quiet - echo "MOKO_CLI=/tmp/moko-platform-api/cli" >> "$GITHUB_ENV" - - - name: "Publish stable release" - run: | - php ${MOKO_CLI}/release_publish.php \ - --path . --stability stable --bump minor --branch main \ - --token "${{ secrets.MOKOGITEA_TOKEN }}" \ - --skip-update-stream - - - name: Update release notes from CHANGELOG.md - run: | - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - - # Extract [Unreleased] section from changelog - if [ -f "CHANGELOG.md" ]; then - NOTES=$(awk '/^## \[Unreleased\]/{found=1; next} /^## \[/{if(found) exit} found{print}' CHANGELOG.md) - [ -z "$NOTES" ] && NOTES="Stable release" - else - NOTES="Stable release" - fi - - # Update release body via API - RELEASE_ID=$(curl -sf -H "Authorization: token ${{ secrets.MOKOGITEA_TOKEN }}" \ - "${API_BASE}/releases/tags/stable" | python3 -c "import json,sys; print(json.load(sys.stdin).get('id',''))" 2>/dev/null || true) - - if [ -n "$RELEASE_ID" ]; then - python3 -c " - import json, urllib.request - body = open('/dev/stdin').read() - payload = json.dumps({'body': body}).encode() - req = urllib.request.Request( - '${API_BASE}/releases/${RELEASE_ID}', - data=payload, method='PATCH', - headers={ - 'Authorization': 'token ${{ secrets.MOKOGITEA_TOKEN }}', - 'Content-Type': 'application/json' - }) - urllib.request.urlopen(req) - " <<< "$NOTES" - echo "Release notes updated from CHANGELOG.md" - fi - - # -- STEP 9: Mirror to GitHub (stable only) -------------------------------- - - name: "Step 9: Mirror release to GitHub" - if: >- - steps.version.outputs.skip != 'true' && - secrets.GH_MIRROR_TOKEN != '' - continue-on-error: true - run: | - VERSION="${{ steps.bump.outputs.version || steps.version.outputs.version }}" - RELEASE_TAG="${{ steps.version.outputs.release_tag }}" - GH_REPO="${{ vars.GH_MIRROR_REPO || github.repository }}" - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - php ${MOKO_CLI}/release_mirror.php \ - --version "$VERSION" --tag "$RELEASE_TAG" \ - --token "${{ secrets.MOKOGITEA_TOKEN }}" --api-base "$API_BASE" \ - --gh-token "${{ secrets.GH_MIRROR_TOKEN }}" --gh-repo "$GH_REPO" \ - --branch main 2>&1 || true - echo "GitHub mirror updated" >> $GITHUB_STEP_SUMMARY - - # -- STEP 10: Sync main branch to GitHub mirror ---------------------------- - - name: "Step 10: Push main to GitHub mirror" - if: >- - steps.version.outputs.skip != 'true' && - secrets.GH_MIRROR_TOKEN != '' - continue-on-error: true - run: | - GH_REPO="${{ vars.GH_MIRROR_REPO || github.repository }}" - GH_ORG=$(echo "$GH_REPO" | cut -d/ -f1) - GH_NAME=$(echo "$GH_REPO" | cut -d/ -f2) - git remote add github "https://x-access-token:${{ secrets.GH_MIRROR_TOKEN }}@github.com/${GH_ORG}/${GH_NAME}.git" 2>/dev/null || \ - git remote set-url github "https://x-access-token:${{ secrets.GH_MIRROR_TOKEN }}@github.com/${GH_ORG}/${GH_NAME}.git" - git fetch origin main --depth=1 - git push github origin/main:refs/heads/main --force 2>/dev/null \ - && echo "main branch pushed to GitHub mirror" \ - || echo "WARNING: GitHub mirror push failed" - - - name: "Step 11: Delete rc branch and recreate dev from main" - if: steps.version.outputs.skip != 'true' - continue-on-error: true - run: | - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - TOKEN="${{ secrets.MOKOGITEA_TOKEN }}" - - # Delete rc branch (ephemeral - created by promote-rc) - curl -sf -X DELETE -H "Authorization: token ${TOKEN}" \ - "${API_BASE}/branches/rc" 2>/dev/null \ - && echo "Deleted rc branch" || echo "rc branch not found" - - # Delete dev branch - curl -sf -X DELETE -H "Authorization: token ${TOKEN}" \ - "${API_BASE}/branches/dev" 2>/dev/null && echo "Deleted dev branch" - - # Recreate dev from main (now includes version bump + changelog promotion) - curl -sf -X POST -H "Authorization: token ${TOKEN}" \ - -H "Content-Type: application/json" \ - "${API_BASE}/branches" \ - -d '{"new_branch_name":"dev","old_branch_name":"main"}' 2>/dev/null && echo "Recreated dev from main" - - echo "Pre-release branches cleaned, dev reset from main" >> $GITHUB_STEP_SUMMARY - - - name: "Step 12: Create version branch from main" - if: steps.version.outputs.skip != 'true' - continue-on-error: true - run: | - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - TOKEN="${{ secrets.MOKOGITEA_TOKEN }}" - VERSION="${{ steps.bump.outputs.version || steps.version.outputs.version }}" - BRANCH_NAME="version/${VERSION}" - MAIN_SHA=$(git rev-parse HEAD) - - # Delete old version branch if it exists (same version re-release) - curl -sf -X DELETE -H "Authorization: token ${TOKEN}" "${API_BASE}/branches/${BRANCH_NAME}" 2>/dev/null && echo "Deleted old ${BRANCH_NAME}" - - # Create version/XX.YY.ZZ from main - curl -sf -X POST -H "Authorization: token ${TOKEN}" -H "Content-Type: application/json" "${API_BASE}/branches" -d "{\"new_branch_name\":\"${BRANCH_NAME}\",\"old_branch_name\":\"main\"}" 2>/dev/null && echo "Created ${BRANCH_NAME} from main (${MAIN_SHA})" || echo "WARNING: ${BRANCH_NAME} creation failed" - - echo "Version branch created: ${BRANCH_NAME} (${MAIN_SHA})" >> $GITHUB_STEP_SUMMARY - - - - # -- Dolibarr post-release: Reset dev version ----------------------------- - - name: "Post-release: Reset dev version" - if: steps.version.outputs.skip != 'true' - continue-on-error: true - run: | - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - php ${MOKO_CLI}/version_reset_dev.php \ - --token "${{ secrets.MOKOGITEA_TOKEN }}" --api-base "${API_BASE}" \ - --branch dev --path . 2>&1 || true - - # -- Summary -------------------------------------------------------------- - - name: Pipeline Summary - if: always() - run: | - VERSION="${{ steps.bump.outputs.version || steps.version.outputs.version }}" - PLATFORM="${{ steps.platform.outputs.platform }}" - if [ "${{ steps.version.outputs.skip }}" = "true" ]; then - echo "## Release Skipped" >> $GITHUB_STEP_SUMMARY - echo "No VERSION in README.md" >> $GITHUB_STEP_SUMMARY - elif [ "${{ steps.check.outputs.already_released }}" = "true" ]; then - echo "## Already Released - ${VERSION}" >> $GITHUB_STEP_SUMMARY - else - echo "" >> $GITHUB_STEP_SUMMARY - echo "## Build & Release Complete (${PLATFORM})" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "| Step | Result |" >> $GITHUB_STEP_SUMMARY - echo "|------|--------|" >> $GITHUB_STEP_SUMMARY - echo "| Platform | \`${PLATFORM}\` |" >> $GITHUB_STEP_SUMMARY - echo "| Version | \`${VERSION}\` |" >> $GITHUB_STEP_SUMMARY - echo "| Branch | \`${{ steps.version.outputs.branch }}\` |" >> $GITHUB_STEP_SUMMARY - echo "| Tag | \`${{ steps.version.outputs.tag }}\` |" >> $GITHUB_STEP_SUMMARY - echo "| Release | [View](${GITEA_URL}/${GITEA_ORG}/${GITEA_REPO}/releases/tag/${{ steps.version.outputs.tag }}) |" >> $GITHUB_STEP_SUMMARY - fi +# Copyright (C) 2026 Moko Consulting +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# FILE INFORMATION +# DEFGROUP: Gitea.Workflow +# INGROUP: moko-platform.Release +# REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/moko-platform +# PATH: /templates/workflows/universal/auto-release.yml.template +# VERSION: 05.00.00 +# BRIEF: Universal build & release � detects platform from manifest.xml +# +# +========================================================================+ +# | UNIVERSAL BUILD & RELEASE PIPELINE | +# +========================================================================+ +# | | +# | Reads manifest.xml (joomla|dolibarr|generic) to branch logic. | +# | | +# | Platform-specific: | +# | joomla: XML manifest, type-prefixed packages | +# | dolibarr: mod*.class.php, update.txt, dev version reset | +# | generic: README-only, no update stream | +# | | +# +========================================================================+ + +name: "Universal: Build & Release" + +on: + pull_request: + types: [opened, closed] + branches: + - main + workflow_dispatch: + inputs: + action: + description: 'Action to perform' + required: false + type: choice + default: release + options: + - release + - promote-rc + +env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true + GITEA_URL: ${{ vars.GITEA_URL || 'https://git.mokoconsulting.tech' }} + GITEA_ORG: ${{ vars.GITEA_ORG || github.repository_owner }} + GITEA_REPO: ${{ vars.GITEA_REPO || github.event.repository.name }} + +permissions: + contents: write + +jobs: + # ── PR Opened → Rename branch to RC and build RC release ───────────────────── + promote-rc: + name: Promote to RC + runs-on: release + if: >- + (github.event.action == 'opened' && github.event.pull_request.merged != true) || + (github.event_name == 'workflow_dispatch' && inputs.action == 'promote-rc') + + steps: + - name: Checkout repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + token: ${{ secrets.MOKOGITEA_TOKEN }} + fetch-depth: 1 + + - name: Setup moko-platform tools + env: + MOKO_CLONE_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }} + MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting + run: | + if [ -f /opt/moko-platform/cli/version_bump.php ] && [ -f /opt/moko-platform/vendor/autoload.php ]; then + echo Using pre-installed /opt/moko-platform + echo MOKO_CLI=/opt/moko-platform/cli >> $GITHUB_ENV + else + echo Falling back to fresh clone + if ! command -v composer > /dev/null 2>&1; then + sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer > /dev/null 2>&1 + fi + rm -rf /tmp/moko-platform-api + CLONE_URL=https://x-access-token:${MOKO_CLONE_TOKEN}@${MOKO_CLONE_HOST}/moko-platform.git + git clone --depth 1 --branch main --quiet $CLONE_URL /tmp/moko-platform-api + cd /tmp/moko-platform-api + composer install --no-dev --no-interaction --quiet + echo MOKO_CLI=/tmp/moko-platform-api/cli >> $GITHUB_ENV + fi + + - name: Rename branch to rc + run: | + php ${MOKO_CLI}/branch_rename.php \ + --from "${{ github.event.pull_request.head.ref || 'dev' }}" --to rc \ + --token "${{ secrets.MOKOGITEA_TOKEN }}" \ + --api-base "${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" \ + --pr "${{ github.event.pull_request.number }}" + + - name: Checkout rc and configure git + run: | + git fetch origin rc + git checkout rc + git config --local user.email "gitea-actions[bot]@mokoconsulting.tech" + git config --local user.name "gitea-actions[bot]" + git remote set-url origin "https://x-access-token:${{ secrets.MOKOGITEA_TOKEN }}@git.mokoconsulting.tech/${{ github.repository }}.git" + + - name: Publish RC release + run: | + php ${MOKO_CLI}/release_publish.php \ + --path . --stability rc --bump minor --branch rc \ + --token "${{ secrets.MOKOGITEA_TOKEN }}" + + - name: Summary + if: always() + run: | + echo "## Promoted to Release Candidate" >> $GITHUB_STEP_SUMMARY + echo "Branch renamed to rc, minor bump, RC release built" >> $GITHUB_STEP_SUMMARY + + # ── Merged PR → Build & Release (or promote RC to stable) ──────────────────── + release: + name: Build & Release Pipeline + runs-on: release + if: >- + github.event.pull_request.merged == true || + (github.event_name == 'workflow_dispatch' && inputs.action != 'promote-rc') + + steps: + - name: Checkout repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + token: ${{ secrets.MOKOGITEA_TOKEN }} + fetch-depth: 0 + + - name: Configure git for bot pushes + run: | + git config --local user.email "gitea-actions[bot]@mokoconsulting.tech" + git config --local user.name "gitea-actions[bot]" + git remote set-url origin "https://x-access-token:${{ secrets.MOKOGITEA_TOKEN }}@git.mokoconsulting.tech/${{ github.repository }}.git" + + - name: Check for merge conflict markers + run: | + CONFLICTS=$(grep -rn '<<<<<<< \|>>>>>>> \|^=======$' --include='*.php' --include='*.xml' --include='*.css' --include='*.js' --include='*.json' --include='*.md' --include='*.yml' --include='*.yaml' --include='*.ini' --include='*.txt' . 2>/dev/null | grep -v '.git/' || true) + if [ -n "$CONFLICTS" ]; then + echo "::error::Merge conflict markers found — aborting release" + echo "## Release Blocked: Conflict Markers" >> $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + echo "$CONFLICTS" >> $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + exit 1 + fi + echo "No conflict markers found" + + - name: Setup moko-platform tools + env: + MOKO_CLONE_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }} + MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting + COMPOSER_AUTH: '{"github-oauth":{"github.com":"${{ secrets.GH_MIRROR_TOKEN }}"}}' + run: | + if [ -f /opt/moko-platform/cli/version_bump.php ] && [ -f /opt/moko-platform/vendor/autoload.php ]; then + echo Using pre-installed /opt/moko-platform + echo MOKO_CLI=/opt/moko-platform/cli >> $GITHUB_ENV + else + echo Falling back to fresh clone + if ! command -v composer > /dev/null 2>&1; then + sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer > /dev/null 2>&1 + fi + rm -rf /tmp/moko-platform-api + CLONE_URL=https://x-access-token:${MOKO_CLONE_TOKEN}@${MOKO_CLONE_HOST}/moko-platform.git + git clone --depth 1 --branch main --quiet $CLONE_URL /tmp/moko-platform-api + cd /tmp/moko-platform-api + composer install --no-dev --no-interaction --quiet + echo MOKO_CLI=/tmp/moko-platform-api/cli >> $GITHUB_ENV + fi + + - name: "Publish stable release" + run: | + php ${MOKO_CLI}/release_publish.php \ + --path . --stability stable --bump minor --branch main \ + --token "${{ secrets.MOKOGITEA_TOKEN }}" + + - name: Update release notes from CHANGELOG.md + run: | + API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" + + # Extract [Unreleased] section from changelog + if [ -f "CHANGELOG.md" ]; then + NOTES=$(awk '/^## \[Unreleased\]/{found=1; next} /^## \[/{if(found) exit} found{print}' CHANGELOG.md) + [ -z "$NOTES" ] && NOTES="Stable release" + else + NOTES="Stable release" + fi + + # Update release body via API + RELEASE_ID=$(curl -sf -H "Authorization: token ${{ secrets.MOKOGITEA_TOKEN }}" \ + "${API_BASE}/releases/tags/stable" | python3 -c "import json,sys; print(json.load(sys.stdin).get('id',''))" 2>/dev/null || true) + + if [ -n "$RELEASE_ID" ]; then + python3 -c " + import json, urllib.request + body = open('/dev/stdin').read() + payload = json.dumps({'body': body}).encode() + req = urllib.request.Request( + '${API_BASE}/releases/${RELEASE_ID}', + data=payload, method='PATCH', + headers={ + 'Authorization': 'token ${{ secrets.MOKOGITEA_TOKEN }}', + 'Content-Type': 'application/json' + }) + urllib.request.urlopen(req) + " <<< "$NOTES" + echo "Release notes updated from CHANGELOG.md" + fi + + # -- STEP 9: Mirror to GitHub (stable only) -------------------------------- + - name: "Step 9: Mirror release to GitHub" + if: >- + steps.version.outputs.skip != 'true' && + secrets.GH_MIRROR_TOKEN != '' + continue-on-error: true + run: | + VERSION="${{ steps.bump.outputs.version || steps.version.outputs.version }}" + RELEASE_TAG="${{ steps.version.outputs.release_tag }}" + GH_REPO="${{ vars.GH_MIRROR_REPO || github.repository }}" + API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" + php ${MOKO_CLI}/release_mirror.php \ + --version "$VERSION" --tag "$RELEASE_TAG" \ + --token "${{ secrets.MOKOGITEA_TOKEN }}" --api-base "$API_BASE" \ + --gh-token "${{ secrets.GH_MIRROR_TOKEN }}" --gh-repo "$GH_REPO" \ + --branch main 2>&1 || true + echo "GitHub mirror updated" >> $GITHUB_STEP_SUMMARY + + # -- STEP 10: Sync main branch to GitHub mirror ---------------------------- + - name: "Step 10: Push main to GitHub mirror" + if: >- + steps.version.outputs.skip != 'true' && + secrets.GH_MIRROR_TOKEN != '' + continue-on-error: true + run: | + GH_REPO="${{ vars.GH_MIRROR_REPO || github.repository }}" + GH_ORG=$(echo "$GH_REPO" | cut -d/ -f1) + GH_NAME=$(echo "$GH_REPO" | cut -d/ -f2) + git remote add github "https://x-access-token:${{ secrets.GH_MIRROR_TOKEN }}@github.com/${GH_ORG}/${GH_NAME}.git" 2>/dev/null || \ + git remote set-url github "https://x-access-token:${{ secrets.GH_MIRROR_TOKEN }}@github.com/${GH_ORG}/${GH_NAME}.git" + git fetch origin main --depth=1 + git push github origin/main:refs/heads/main --force 2>/dev/null \ + && echo "main branch pushed to GitHub mirror" \ + || echo "WARNING: GitHub mirror push failed" + + - name: "Step 11: Delete rc branch and recreate dev from main" + if: steps.version.outputs.skip != 'true' + continue-on-error: true + run: | + API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" + TOKEN="${{ secrets.MOKOGITEA_TOKEN }}" + + # Delete rc branch (ephemeral — created by promote-rc) + curl -sf -X DELETE -H "Authorization: token ${TOKEN}" \ + "${API_BASE}/branches/rc" 2>/dev/null \ + && echo "Deleted rc branch" || echo "rc branch not found" + + # Delete dev branch + curl -sf -X DELETE -H "Authorization: token ${TOKEN}" \ + "${API_BASE}/branches/dev" 2>/dev/null && echo "Deleted dev branch" + + # Recreate dev from main (now includes version bump + changelog promotion) + curl -sf -X POST -H "Authorization: token ${TOKEN}" \ + -H "Content-Type: application/json" \ + "${API_BASE}/branches" \ + -d '{"new_branch_name":"dev","old_branch_name":"main"}' 2>/dev/null && echo "Recreated dev from main" + + echo "Pre-release branches cleaned, dev reset from main" >> $GITHUB_STEP_SUMMARY + + - name: "Step 12: Create version branch from main" + if: steps.version.outputs.skip != 'true' + continue-on-error: true + run: | + API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" + TOKEN="${{ secrets.MOKOGITEA_TOKEN }}" + VERSION="${{ steps.bump.outputs.version || steps.version.outputs.version }}" + BRANCH_NAME="version/${VERSION}" + MAIN_SHA=$(git rev-parse HEAD) + + # Delete old version branch if it exists (same version re-release) + curl -sf -X DELETE -H "Authorization: token ${TOKEN}" "${API_BASE}/branches/${BRANCH_NAME}" 2>/dev/null && echo "Deleted old ${BRANCH_NAME}" + + # Create version/XX.YY.ZZ from main + curl -sf -X POST -H "Authorization: token ${TOKEN}" -H "Content-Type: application/json" "${API_BASE}/branches" -d "{\"new_branch_name\":\"${BRANCH_NAME}\",\"old_branch_name\":\"main\"}" 2>/dev/null && echo "Created ${BRANCH_NAME} from main (${MAIN_SHA})" || echo "WARNING: ${BRANCH_NAME} creation failed" + + echo "Version branch created: ${BRANCH_NAME} (${MAIN_SHA})" >> $GITHUB_STEP_SUMMARY + + + + # -- Dolibarr post-release: Reset dev version ----------------------------- + - name: "Post-release: Reset dev version" + if: steps.version.outputs.skip != 'true' + continue-on-error: true + run: | + API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" + php ${MOKO_CLI}/version_reset_dev.php \ + --token "${{ secrets.MOKOGITEA_TOKEN }}" --api-base "${API_BASE}" \ + --branch dev --path . 2>&1 || true + + # -- Summary -------------------------------------------------------------- + - name: Pipeline Summary + if: always() + run: | + VERSION="${{ steps.bump.outputs.version || steps.version.outputs.version }}" + PLATFORM="${{ steps.platform.outputs.platform }}" + if [ "${{ steps.version.outputs.skip }}" = "true" ]; then + echo "## Release Skipped" >> $GITHUB_STEP_SUMMARY + echo "No VERSION in README.md" >> $GITHUB_STEP_SUMMARY + elif [ "${{ steps.check.outputs.already_released }}" = "true" ]; then + echo "## Already Released — ${VERSION}" >> $GITHUB_STEP_SUMMARY + else + echo "" >> $GITHUB_STEP_SUMMARY + echo "## Build & Release Complete (${PLATFORM})" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "| Step | Result |" >> $GITHUB_STEP_SUMMARY + echo "|------|--------|" >> $GITHUB_STEP_SUMMARY + echo "| Platform | \`${PLATFORM}\` |" >> $GITHUB_STEP_SUMMARY + echo "| Version | \`${VERSION}\` |" >> $GITHUB_STEP_SUMMARY + echo "| Branch | \`${{ steps.version.outputs.branch }}\` |" >> $GITHUB_STEP_SUMMARY + echo "| Tag | \`${{ steps.version.outputs.tag }}\` |" >> $GITHUB_STEP_SUMMARY + echo "| Release | [View](${GITEA_URL}/${GITEA_ORG}/${GITEA_REPO}/releases/tag/${{ steps.version.outputs.tag }}) |" >> $GITHUB_STEP_SUMMARY + fi From 23ccbcbeaee1b2246c4d571f55d47a642762b50f Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sat, 6 Jun 2026 19:52:48 +0000 Subject: [PATCH 10/73] chore(version): pre-release bump to 02.34.21-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- .../plg_webservices_perfectpublisher/perfectpublisher.xml | 2 +- .../plg_webservices_perfectpublisher/services/provider.php | 2 +- .../src/Extension/PerfectPublisherApi.php | 2 +- source/pkg_mokowaas.xml | 2 +- 45 files changed, 55 insertions(+), 55 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 901266c2..85b99cff 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.20 + 02.34.21 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index d695f558..f4c71fbd 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.20 +# VERSION: 02.34.21 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 5883c57a..f5a2a285 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.20 + VERSION: 02.34.21 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 04df2f63..7525b98c 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.20 + VERSION: 02.34.21 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index ab0f227b..a1bbd64c 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.20 + VERSION: 02.34.21 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index 405be1f8..e63a14b1 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.20 + VERSION: 02.34.21 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index 2ee1a030..2402bf0e 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.20 + VERSION: 02.34.21 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index 0f23bd47..123bce4a 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.20 +VERSION: 02.34.21 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index 3eb445b7..8a68dfef 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.20 + VERSION: 02.34.21 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.20) +# MokoWaaS Build Guide (VERSION: 02.34.21) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index 14b45a39..bf9b16d3 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.20 + VERSION: 02.34.21 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.20) +# MokoWaaS Configuration Guide (VERSION: 02.34.21) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index 0ccdc97a..e15fe8c5 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.20 + VERSION: 02.34.21 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.20) +# MokoWaaS Installation Guide (VERSION: 02.34.21) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index 89597065..0b3b9f2e 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.20 + VERSION: 02.34.21 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.20) +# MokoWaaS Operations Guide (VERSION: 02.34.21) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index 591f052b..7a57a1e2 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.20 + VERSION: 02.34.21 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.20) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.21) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index 93726dbc..cc128e99 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.20 + VERSION: 02.34.21 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.20) +# MokoWaaS Testing Guide (VERSION: 02.34.21) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index 37dbb0a5..b664120b 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.20 + VERSION: 02.34.21 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.20) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.21) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index e2876a53..3ee938b7 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.20 + VERSION: 02.34.21 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.20) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.21) ## Introduction diff --git a/docs/index.md b/docs/index.md index 3157bd81..0fb0dcb4 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.20 + VERSION: 02.34.21 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.20) +# MokoWaaS Documentation Index (VERSION: 02.34.21) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index 32fe9178..2b371e83 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.20 + VERSION: 02.34.21 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.20) +# MokoWaaS Plugin Overview (VERSION: 02.34.21) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index 1d252900..ba293e2f 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.20 +VERSION: 02.34.21 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index b24dbee7..df6f5e21 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.20-dev + 02.34.21-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index ce37afa6..059e8244 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.20-dev + 02.34.21-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index 10854fe9..99b6e556 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.20-dev + 02.34.21-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index 5ba39272..e60f9865 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.20-dev + 02.34.21-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index 001aa70c..74cca12c 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.20-dev + 02.34.21-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 12233ce1..4f4d0648 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.20 + * VERSION: 02.34.21 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index 35d6a7e7..a68b9ece 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.20 + * VERSION: 02.34.21 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index 30217de8..add460e9 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.20-dev + 02.34.21-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index 8a9a7480..c9bc7f9b 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.20 + * VERSION: 02.34.21 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index b1fb999c..bd09f5db 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.20 + * VERSION: 02.34.21 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index 19bc323b..b0037621 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.20-dev + 02.34.21-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index 6d67f9b3..b9678cdf 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.20-dev + 02.34.21-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index ed00f614..257b30df 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.20-dev + 02.34.21-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index aaa0b48b..dd404e12 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.20-dev + 02.34.21-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index 5918d18d..fbe6797f 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.20-dev + 02.34.21-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index b4b9d3ca..337f8295 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.20-dev + 02.34.21-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index ecf761f9..b67e7dcf 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.20-dev + 02.34.21-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index c8030ac9..952869a7 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.20 + * VERSION: 02.34.21 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index d004d4ca..09de7779 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.20-dev + 02.34.21-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index 9ca3c518..efa92b01 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.20 + * VERSION: 02.34.21 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index 33b3ea56..dbec7250 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.20 + * VERSION: 02.34.21 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index 0fe7e43e..6296e9fe 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.20-dev + 02.34.21-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml index c714f066..cdbe1649 100644 --- a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml +++ b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.20-dev + 02.34.21-dev Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds. Moko\Plugin\WebServices\PerfectPublisher diff --git a/source/packages/plg_webservices_perfectpublisher/services/provider.php b/source/packages/plg_webservices_perfectpublisher/services/provider.php index 3dedb148..00302ae5 100644 --- a/source/packages/plg_webservices_perfectpublisher/services/provider.php +++ b/source/packages/plg_webservices_perfectpublisher/services/provider.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/services/provider.php - * VERSION: 02.34.20 + * VERSION: 02.34.21 * BRIEF: DI service provider for Perfect Publisher Web Services plugin */ diff --git a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php index 3571d722..1541d4ba 100644 --- a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php +++ b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php - * VERSION: 02.34.20 + * VERSION: 02.34.21 * BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet) */ diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index 9b8e8e8f..b399c791 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.20-dev + 02.34.21-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From 8a2df4486553ffc49c14f9acb38f0eb960bed9e8 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 14:59:59 -0500 Subject: [PATCH 11/73] fix: preserve download keys during install script update site cleanup backupDownloadKeys() saves all extra_query values before migration and cleanup operations. restoreDownloadKeys() re-applies them after, matching by URL first then by old ID. Also updates the file-based backup used by the runtime preserveDownloadKeys() guard. Root cause: cleanupStaleUpdateSites() deletes update site rows which destroys their extra_query (dlid) values. The rows get recreated by Joomla but without the download keys. Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) --- source/script.php | 113 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 113 insertions(+) diff --git a/source/script.php b/source/script.php index 49481545..241c05d3 100644 --- a/source/script.php +++ b/source/script.php @@ -95,12 +95,18 @@ class Pkg_MokowaasInstallerScript // Mark MokoWaaS extensions as protected (prevents disable/uninstall at framework level) $this->protectExtensions(); + // Save download keys before any update site manipulation + $savedKeys = $this->backupDownloadKeys(); + // Migrate all Moko update server URLs to new format $this->migrateUpdateServerUrls(); // Clean up stale/duplicate update sites $this->cleanupStaleUpdateSites(); + // Restore download keys that were wiped by cleanup/migration + $this->restoreDownloadKeys($savedKeys); + // Fix orphaned update records (extension_id=0) $this->fixUpdateRecords(); @@ -656,6 +662,113 @@ class Pkg_MokowaasInstallerScript } } + /** + * Backup all non-empty extra_query values from update sites. + * + * @return array Map of update_site_id => extra_query + */ + private function backupDownloadKeys(): array + { + $keys = []; + + try + { + $db = Factory::getDbo(); + $db->setQuery( + $db->getQuery(true) + ->select([$db->quoteName('update_site_id'), $db->quoteName('extra_query'), $db->quoteName('location')]) + ->from($db->quoteName('#__update_sites')) + ->where($db->quoteName('extra_query') . ' != ' . $db->quote('')) + ); + $rows = $db->loadObjectList() ?: []; + + foreach ($rows as $row) + { + // Key by location so we can match after IDs change + $keys[$row->location] = $row->extra_query; + $keys['id_' . $row->update_site_id] = $row->extra_query; + } + + // Also save to file backup for the preserveDownloadKeys() runtime guard + $backupFile = JPATH_ADMINISTRATOR . '/cache/mokowaas_dlkeys.json'; + $existing = []; + + if (file_exists($backupFile)) + { + $existing = json_decode(file_get_contents($backupFile), true) ?: []; + } + + foreach ($rows as $row) + { + $existing[$row->update_site_id] = $row->extra_query; + } + + file_put_contents($backupFile, json_encode($existing, JSON_PRETTY_PRINT)); + } + catch (\Throwable $e) + { + // Non-critical + } + + return $keys; + } + + /** + * Restore download keys that were cleared by update site cleanup. + * + * @param array $savedKeys Map from backupDownloadKeys() + */ + private function restoreDownloadKeys(array $savedKeys): void + { + if (empty($savedKeys)) + { + return; + } + + try + { + $db = Factory::getDbo(); + $db->setQuery( + $db->getQuery(true) + ->select([$db->quoteName('update_site_id'), $db->quoteName('extra_query'), $db->quoteName('location')]) + ->from($db->quoteName('#__update_sites')) + ->where($db->quoteName('extra_query') . ' = ' . $db->quote('')) + ); + $sites = $db->loadObjectList() ?: []; + + $restored = 0; + + foreach ($sites as $site) + { + // Try to match by location URL first, then by old ID + $key = $savedKeys[$site->location] ?? $savedKeys['id_' . $site->update_site_id] ?? ''; + + if (!empty($key)) + { + $db->setQuery( + $db->getQuery(true) + ->update($db->quoteName('#__update_sites')) + ->set($db->quoteName('extra_query') . ' = ' . $db->quote($key)) + ->where($db->quoteName('update_site_id') . ' = ' . (int) $site->update_site_id) + )->execute(); + $restored++; + } + } + + if ($restored > 0) + { + Factory::getApplication()->enqueueMessage( + sprintf('Restored %d download key(s) after update site cleanup.', $restored), + 'message' + ); + } + } + catch (\Throwable $e) + { + // Non-critical + } + } + /** * Ensure the MokoWaaS update server entry stays enabled and points * to the correct dynamic endpoint with the license key attached. From 3c28483faf991ded60927c4305ae2063e780849e Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 15:04:25 -0500 Subject: [PATCH 12/73] =?UTF-8?q?feat:=20Sprint=204=20=E2=80=94=20Customer?= =?UTF-8?q?=20portal=20with=20orders,=20invoices,=20e-sign,=20license=20(#?= =?UTF-8?q?192)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All net-new site-side files (19 files). No existing views modified. Portal Dashboard: - KPI cards: open orders, unpaid invoices, open tickets, pending signatures - Recent orders table, quick links to all portal sections - User matched to ERP contact by email address My Orders (list + detail): - Customer's order list with status/payment badges - Order detail with line items, subtotal/tax/total My Invoices (list + detail): - Invoice list with overdue highlighting, balance due - Invoice detail with line items and payment totals E-Signature Public Signing Page: - Token-based access (no Joomla login required) - Consent checkbox (must accept before signing) - HTML5 Canvas signature pad with touch/stylus/mouse support - High-DPI canvas rendering - Geolocation capture on submit - Decline with reason - signature-pad.js: full signing flow with consent → sign → success E-Signature Verification Page: - Hash-based public verification (no auth) - Document status, signer table, complete audit trail License Portal: - Current license package, status, active services - DLID entry/update form for self-service license management Assets: - portal.css: shared portal styles - signature-pad.js: Canvas drawing with touch events, DPI scaling 1 model: PortalModel (resolves user→contact, loads orders/invoices/dashboard) --- .../com_mokowaas/media/css/portal.css | 38 ++++ .../com_mokowaas/media/js/signature-pad.js | 162 ++++++++++++++++++ .../site/src/Model/PortalModel.php | 102 +++++++++++ .../site/src/View/Invoice/HtmlView.php | 28 +++ .../site/src/View/Invoices/HtmlView.php | 26 +++ .../site/src/View/License/HtmlView.php | 32 ++++ .../site/src/View/Order/HtmlView.php | 28 +++ .../site/src/View/Orders/HtmlView.php | 26 +++ .../site/src/View/Portal/HtmlView.php | 28 +++ .../site/src/View/Sign/HtmlView.php | 41 +++++ .../site/src/View/SignVerify/HtmlView.php | 35 ++++ .../site/tmpl/invoice/default.php | 39 +++++ .../site/tmpl/invoices/default.php | 31 ++++ .../site/tmpl/license/default.php | 58 +++++++ .../com_mokowaas/site/tmpl/order/default.php | 35 ++++ .../com_mokowaas/site/tmpl/orders/default.php | 27 +++ .../com_mokowaas/site/tmpl/portal/default.php | 96 +++++++++++ .../com_mokowaas/site/tmpl/sign/default.php | 75 ++++++++ .../site/tmpl/signverify/default.php | 64 +++++++ 19 files changed, 971 insertions(+) create mode 100644 source/packages/com_mokowaas/media/css/portal.css create mode 100644 source/packages/com_mokowaas/media/js/signature-pad.js create mode 100644 source/packages/com_mokowaas/site/src/Model/PortalModel.php create mode 100644 source/packages/com_mokowaas/site/src/View/Invoice/HtmlView.php create mode 100644 source/packages/com_mokowaas/site/src/View/Invoices/HtmlView.php create mode 100644 source/packages/com_mokowaas/site/src/View/License/HtmlView.php create mode 100644 source/packages/com_mokowaas/site/src/View/Order/HtmlView.php create mode 100644 source/packages/com_mokowaas/site/src/View/Orders/HtmlView.php create mode 100644 source/packages/com_mokowaas/site/src/View/Portal/HtmlView.php create mode 100644 source/packages/com_mokowaas/site/src/View/Sign/HtmlView.php create mode 100644 source/packages/com_mokowaas/site/src/View/SignVerify/HtmlView.php create mode 100644 source/packages/com_mokowaas/site/tmpl/invoice/default.php create mode 100644 source/packages/com_mokowaas/site/tmpl/invoices/default.php create mode 100644 source/packages/com_mokowaas/site/tmpl/license/default.php create mode 100644 source/packages/com_mokowaas/site/tmpl/order/default.php create mode 100644 source/packages/com_mokowaas/site/tmpl/orders/default.php create mode 100644 source/packages/com_mokowaas/site/tmpl/portal/default.php create mode 100644 source/packages/com_mokowaas/site/tmpl/sign/default.php create mode 100644 source/packages/com_mokowaas/site/tmpl/signverify/default.php diff --git a/source/packages/com_mokowaas/media/css/portal.css b/source/packages/com_mokowaas/media/css/portal.css new file mode 100644 index 00000000..271879ec --- /dev/null +++ b/source/packages/com_mokowaas/media/css/portal.css @@ -0,0 +1,38 @@ +/** + * MokoWaaS+ERP Customer Portal styles + * @since 02.34.16 + */ + +.mokowaas-portal h2, +.mokowaas-portal-orders h2, +.mokowaas-portal-invoices h2, +.mokowaas-portal-license h2 { + color: #1a2744; + font-weight: 700; +} + +/* Signing page */ +.mokowaas-sign-page { + max-width: 800px; + margin: 0 auto; +} + +#signature-canvas { + border: 1px solid #dee2e6; + border-radius: 4px; + background: #fff; +} + +/* Verification page */ +.mokowaas-verify-page { + max-width: 900px; + margin: 0 auto; +} + +/* Portal cards */ +.mokowaas-portal .card { + transition: box-shadow 0.15s; +} +.mokowaas-portal .card:hover { + box-shadow: 0 4px 12px rgba(0,0,0,0.1); +} diff --git a/source/packages/com_mokowaas/media/js/signature-pad.js b/source/packages/com_mokowaas/media/js/signature-pad.js new file mode 100644 index 00000000..bf204b96 --- /dev/null +++ b/source/packages/com_mokowaas/media/js/signature-pad.js @@ -0,0 +1,162 @@ +/** + * MokoWaaS+ERP Signature Pad — HTML5 Canvas drawing for e-signature capture. + * Touch-friendly, works on mobile/tablet/desktop. + * @since 02.34.16 + */ +document.addEventListener('DOMContentLoaded', function () { + 'use strict'; + + var canvas = document.getElementById('signature-canvas'); + if (!canvas) { return; } + + var ctx = canvas.getContext('2d'); + var drawing = false; + var hasSigned = false; + + // High-DPI support + var dpr = window.devicePixelRatio || 1; + var rect = canvas.getBoundingClientRect(); + canvas.width = rect.width * dpr; + canvas.height = rect.height * dpr; + ctx.scale(dpr, dpr); + ctx.lineWidth = 2; + ctx.lineCap = 'round'; + ctx.strokeStyle = '#000'; + + function getPos(e) { + var r = canvas.getBoundingClientRect(); + var touch = e.touches ? e.touches[0] : e; + return { x: touch.clientX - r.left, y: touch.clientY - r.top }; + } + + canvas.addEventListener('mousedown', function (e) { drawing = true; ctx.beginPath(); var p = getPos(e); ctx.moveTo(p.x, p.y); }); + canvas.addEventListener('mousemove', function (e) { if (!drawing) return; var p = getPos(e); ctx.lineTo(p.x, p.y); ctx.stroke(); hasSigned = true; }); + canvas.addEventListener('mouseup', function () { drawing = false; }); + canvas.addEventListener('mouseleave', function () { drawing = false; }); + + canvas.addEventListener('touchstart', function (e) { e.preventDefault(); drawing = true; ctx.beginPath(); var p = getPos(e); ctx.moveTo(p.x, p.y); }, { passive: false }); + canvas.addEventListener('touchmove', function (e) { e.preventDefault(); if (!drawing) return; var p = getPos(e); ctx.lineTo(p.x, p.y); ctx.stroke(); hasSigned = true; }, { passive: false }); + canvas.addEventListener('touchend', function () { drawing = false; }); + + // Clear + var clearBtn = document.getElementById('clear-signature'); + if (clearBtn) { + clearBtn.addEventListener('click', function () { + ctx.clearRect(0, 0, canvas.width, canvas.height); + hasSigned = false; + }); + } + + // Submit + var form = document.getElementById('signing-form'); + if (form) { + form.addEventListener('submit', function (e) { + e.preventDefault(); + + if (!hasSigned) { + alert('Please draw your signature before submitting.'); + return; + } + + var consentBox = document.getElementById('consent-checkbox'); + if (consentBox && !consentBox.checked) { + alert('You must accept the e-signature consent agreement.'); + return; + } + + var token = form.dataset.token; + var signatureData = canvas.toDataURL('image/png'); + var basePath = (Joomla.getOptions('system.paths') || {}).baseFull || ''; + + var body = { + token: token, + signature: signatureData, + signature_type: 'draw' + }; + + // Geolocation + if (navigator.geolocation) { + navigator.geolocation.getCurrentPosition(function (pos) { + body.geo_lat = pos.coords.latitude; + body.geo_lon = pos.coords.longitude; + submitSignature(basePath, body); + }, function () { + submitSignature(basePath, body); + }, { timeout: 5000 }); + } else { + submitSignature(basePath, body); + } + }); + } + + function submitSignature(basePath, body) { + var btn = document.getElementById('btn-sign'); + btn.disabled = true; + btn.textContent = 'Submitting...'; + + // If consent needed, send consent first + var consentBox = document.getElementById('consent-checkbox'); + var consentPromise = Promise.resolve(); + + if (consentBox) { + consentPromise = fetch(basePath + 'api/index.php/v1/mokowaas/erp/esign/public', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ token: body.token, accepted: true, action: 'consent' }) + }).then(function (r) { return r.json(); }); + } + + consentPromise.then(function () { + return fetch(basePath + 'api/index.php/v1/mokowaas/erp/esign/public', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(body) + }); + }) + .then(function (r) { return r.json(); }) + .then(function (result) { + if (result.ok) { + document.querySelector('.mokowaas-sign-page').textContent = ''; + var success = document.createElement('div'); + success.className = 'alert alert-success fs-5 text-center py-5'; + success.textContent = 'Document signed successfully. Thank you!'; + document.querySelector('.mokowaas-sign-page').appendChild(success); + } else { + alert(result.error || 'Signing failed. Please try again.'); + btn.disabled = false; + btn.textContent = 'Sign Document'; + } + }) + .catch(function (err) { + alert('Network error: ' + err.message); + btn.disabled = false; + btn.textContent = 'Sign Document'; + }); + } + + // Decline + var declineBtn = document.getElementById('btn-decline'); + if (declineBtn) { + declineBtn.addEventListener('click', function () { + var reason = prompt('Reason for declining (optional):'); + if (reason === null) { return; } + + var token = form.dataset.token; + var basePath = (Joomla.getOptions('system.paths') || {}).baseFull || ''; + + fetch(basePath + 'api/index.php/v1/mokowaas/erp/esign/public', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ token: token, reason: reason, action: 'decline' }) + }) + .then(function (r) { return r.json(); }) + .then(function (result) { + document.querySelector('.mokowaas-sign-page').textContent = ''; + var msg = document.createElement('div'); + msg.className = 'alert alert-warning fs-5 text-center py-5'; + msg.textContent = 'Document declined.'; + document.querySelector('.mokowaas-sign-page').appendChild(msg); + }); + }); + } +}); diff --git a/source/packages/com_mokowaas/site/src/Model/PortalModel.php b/source/packages/com_mokowaas/site/src/Model/PortalModel.php new file mode 100644 index 00000000..b29b49a7 --- /dev/null +++ b/source/packages/com_mokowaas/site/src/Model/PortalModel.php @@ -0,0 +1,102 @@ +guest) { return 0; } + + $db = $this->getDatabase(); + $db->setQuery( + $db->getQuery(true) + ->select('id') + ->from($db->quoteName('#__contact_details')) + ->where($db->quoteName('email_to') . ' = ' . $db->quote($user->email)) + ->where($db->quoteName('published') . ' = 1') + ->setLimit(1) + ); + + return (int) $db->loadResult(); + } + + public function getDashboard(int $contactId): object + { + $db = $this->getDatabase(); + $dash = new \stdClass(); + + // Open orders + $db->setQuery($db->getQuery(true)->select('COUNT(*)')->from($db->quoteName('#__mokowaas_erp_orders'))->where($db->quoteName('contact_id') . ' = ' . $contactId)->where($db->quoteName('status') . ' NOT IN (' . $db->quote('delivered') . ',' . $db->quote('cancelled') . ')')); + $dash->open_orders = (int) $db->loadResult(); + + // Unpaid invoices + $db->setQuery($db->getQuery(true)->select('COUNT(*)')->select('COALESCE(SUM(total - amount_paid), 0) AS total_due')->from($db->quoteName('#__mokowaas_erp_invoices'))->where($db->quoteName('contact_id') . ' = ' . $contactId)->where($db->quoteName('status') . ' IN (' . $db->quote('sent') . ',' . $db->quote('partial') . ',' . $db->quote('overdue') . ')')); + $inv = $db->loadObject(); + $dash->unpaid_invoices = (int) $inv->{'COUNT(*)'}; + $dash->total_due = (float) $inv->total_due; + + // Open tickets + $db->setQuery($db->getQuery(true)->select('COUNT(*)')->from($db->quoteName('#__mokowaas_tickets'))->where($db->quoteName('created_by') . ' = ' . (int) Factory::getUser()->id)->where($db->quoteName('status') . ' NOT IN (' . $db->quote('closed') . ',' . $db->quote('resolved') . ')')); + $dash->open_tickets = (int) $db->loadResult(); + + // Pending signatures + $db->setQuery($db->getQuery(true)->select('COUNT(*)')->from($db->quoteName('#__mokowaas_erp_esign_signers'))->where($db->quoteName('email') . ' = ' . $db->quote(Factory::getUser()->email))->where($db->quoteName('status') . ' IN (' . $db->quote('pending') . ',' . $db->quote('viewed') . ')')); + $dash->pending_signatures = (int) $db->loadResult(); + + // Recent orders + $db->setQuery($db->getQuery(true)->select('id, ref, status, total, created')->from($db->quoteName('#__mokowaas_erp_orders'))->where($db->quoteName('contact_id') . ' = ' . $contactId)->order('created DESC'), 0, 5); + $dash->recent_orders = $db->loadObjectList() ?: []; + + return $dash; + } + + public function getOrders(int $contactId, int $limit = 25): array + { + $db = $this->getDatabase(); + $db->setQuery($db->getQuery(true)->select('*')->from($db->quoteName('#__mokowaas_erp_orders'))->where($db->quoteName('contact_id') . ' = ' . $contactId)->order('created DESC'), 0, $limit); + return $db->loadObjectList() ?: []; + } + + public function getOrder(int $contactId, int $id): ?object + { + $db = $this->getDatabase(); + $db->setQuery($db->getQuery(true)->select('*')->from($db->quoteName('#__mokowaas_erp_orders'))->where($db->quoteName('id') . ' = ' . $id)->where($db->quoteName('contact_id') . ' = ' . $contactId)); + $order = $db->loadObject(); + if (!$order) { return null; } + + $db->setQuery($db->getQuery(true)->select('oi.*, p.sku')->from($db->quoteName('#__mokowaas_erp_order_items', 'oi'))->join('LEFT', $db->quoteName('#__mokowaas_erp_products', 'p') . ' ON p.id = oi.product_id')->where($db->quoteName('oi.order_id') . ' = ' . $id)->order('oi.position ASC')); + $order->items = $db->loadObjectList() ?: []; + return $order; + } + + public function getInvoices(int $contactId, int $limit = 25): array + { + $db = $this->getDatabase(); + $db->setQuery($db->getQuery(true)->select('*, (total - amount_paid) AS balance_due')->from($db->quoteName('#__mokowaas_erp_invoices'))->where($db->quoteName('contact_id') . ' = ' . $contactId)->order('created DESC'), 0, $limit); + return $db->loadObjectList() ?: []; + } + + public function getInvoice(int $contactId, int $id): ?object + { + $db = $this->getDatabase(); + $db->setQuery($db->getQuery(true)->select('*, (total - amount_paid) AS balance_due')->from($db->quoteName('#__mokowaas_erp_invoices'))->where($db->quoteName('id') . ' = ' . $id)->where($db->quoteName('contact_id') . ' = ' . $contactId)); + $inv = $db->loadObject(); + if (!$inv) { return null; } + + $db->setQuery($db->getQuery(true)->select('ii.*, p.sku')->from($db->quoteName('#__mokowaas_erp_invoice_items', 'ii'))->join('LEFT', $db->quoteName('#__mokowaas_erp_products', 'p') . ' ON p.id = ii.product_id')->where($db->quoteName('ii.invoice_id') . ' = ' . $id)->order('ii.position ASC')); + $inv->items = $db->loadObjectList() ?: []; + return $inv; + } +} diff --git a/source/packages/com_mokowaas/site/src/View/Invoice/HtmlView.php b/source/packages/com_mokowaas/site/src/View/Invoice/HtmlView.php new file mode 100644 index 00000000..dc4aab5c --- /dev/null +++ b/source/packages/com_mokowaas/site/src/View/Invoice/HtmlView.php @@ -0,0 +1,28 @@ +guest) { Factory::getApplication()->redirect('index.php?option=com_users&view=login'); return; } + + $model = $this->getModel('Portal'); + $contactId = $model->getContactId(); + $this->invoice = $contactId ? $model->getInvoice($contactId, Factory::getApplication()->getInput()->getInt('id', 0)) : null; + + if (!$this->invoice) { throw new \Exception('Invoice not found', 404); } + + Factory::getApplication()->getDocument()->getWebAssetManager() + ->registerAndUseStyle('com_mokowaas.portal', 'com_mokowaas/portal.css'); + parent::display($tpl); + } +} diff --git a/source/packages/com_mokowaas/site/src/View/Invoices/HtmlView.php b/source/packages/com_mokowaas/site/src/View/Invoices/HtmlView.php new file mode 100644 index 00000000..e17eb9a2 --- /dev/null +++ b/source/packages/com_mokowaas/site/src/View/Invoices/HtmlView.php @@ -0,0 +1,26 @@ +guest) { Factory::getApplication()->redirect('index.php?option=com_users&view=login'); return; } + + $model = $this->getModel('Portal'); + $contactId = $model->getContactId(); + $this->items = $contactId ? $model->getInvoices($contactId) : []; + + Factory::getApplication()->getDocument()->getWebAssetManager() + ->registerAndUseStyle('com_mokowaas.portal', 'com_mokowaas/portal.css'); + parent::display($tpl); + } +} diff --git a/source/packages/com_mokowaas/site/src/View/License/HtmlView.php b/source/packages/com_mokowaas/site/src/View/License/HtmlView.php new file mode 100644 index 00000000..47b4f25b --- /dev/null +++ b/source/packages/com_mokowaas/site/src/View/License/HtmlView.php @@ -0,0 +1,32 @@ +guest) { Factory::getApplication()->redirect('index.php?option=com_users&view=login'); return; } + + // License data would come from plg_system_mokowaas_license cache + // For now, placeholder structure + $this->licenseData = (object) [ + 'valid' => true, + 'package' => 'MokoWaaS+ERP', + 'services' => ['base', 'erp'], + 'expiry' => null, + 'dlid' => '', + ]; + + Factory::getApplication()->getDocument()->getWebAssetManager() + ->registerAndUseStyle('com_mokowaas.portal', 'com_mokowaas/portal.css'); + parent::display($tpl); + } +} diff --git a/source/packages/com_mokowaas/site/src/View/Order/HtmlView.php b/source/packages/com_mokowaas/site/src/View/Order/HtmlView.php new file mode 100644 index 00000000..e0fdb29e --- /dev/null +++ b/source/packages/com_mokowaas/site/src/View/Order/HtmlView.php @@ -0,0 +1,28 @@ +guest) { Factory::getApplication()->redirect('index.php?option=com_users&view=login'); return; } + + $model = $this->getModel('Portal'); + $contactId = $model->getContactId(); + $this->order = $contactId ? $model->getOrder($contactId, Factory::getApplication()->getInput()->getInt('id', 0)) : null; + + if (!$this->order) { throw new \Exception('Order not found', 404); } + + Factory::getApplication()->getDocument()->getWebAssetManager() + ->registerAndUseStyle('com_mokowaas.portal', 'com_mokowaas/portal.css'); + parent::display($tpl); + } +} diff --git a/source/packages/com_mokowaas/site/src/View/Orders/HtmlView.php b/source/packages/com_mokowaas/site/src/View/Orders/HtmlView.php new file mode 100644 index 00000000..fc6a034f --- /dev/null +++ b/source/packages/com_mokowaas/site/src/View/Orders/HtmlView.php @@ -0,0 +1,26 @@ +guest) { Factory::getApplication()->redirect('index.php?option=com_users&view=login'); return; } + + $model = $this->getModel('Portal'); + $contactId = $model->getContactId(); + $this->items = $contactId ? $model->getOrders($contactId) : []; + + Factory::getApplication()->getDocument()->getWebAssetManager() + ->registerAndUseStyle('com_mokowaas.portal', 'com_mokowaas/portal.css'); + parent::display($tpl); + } +} diff --git a/source/packages/com_mokowaas/site/src/View/Portal/HtmlView.php b/source/packages/com_mokowaas/site/src/View/Portal/HtmlView.php new file mode 100644 index 00000000..3fd613b8 --- /dev/null +++ b/source/packages/com_mokowaas/site/src/View/Portal/HtmlView.php @@ -0,0 +1,28 @@ +guest) { Factory::getApplication()->redirect('index.php?option=com_users&view=login'); return; } + + $model = $this->getModel(); + $this->contactId = $model->getContactId(); + $this->dashboard = $this->contactId ? $model->getDashboard($this->contactId) : null; + + $wa = Factory::getApplication()->getDocument()->getWebAssetManager(); + $wa->registerAndUseStyle('com_mokowaas.portal', 'com_mokowaas/portal.css'); + + parent::display($tpl); + } +} diff --git a/source/packages/com_mokowaas/site/src/View/Sign/HtmlView.php b/source/packages/com_mokowaas/site/src/View/Sign/HtmlView.php new file mode 100644 index 00000000..ae07de0e --- /dev/null +++ b/source/packages/com_mokowaas/site/src/View/Sign/HtmlView.php @@ -0,0 +1,41 @@ +getInput()->get('token', '', 'ALNUM'); + + if ($token && \strlen($token) === 128) + { + $db = Factory::getDbo(); + $db->setQuery( + $db->getQuery(true) + ->select('s.*, r.title AS request_title, r.description AS request_description, r.status AS request_status, r.require_selfie, r.require_id, r.require_consent') + ->from($db->quoteName('#__mokowaas_erp_esign_signers', 's')) + ->join('INNER', $db->quoteName('#__mokowaas_erp_esign_requests', 'r') . ' ON r.id = s.request_id') + ->where($db->quoteName('s.token') . ' = ' . $db->quote($token)) + ); + $this->signer = $db->loadObject(); + $this->request = $this->signer ? (object) ['title' => $this->signer->request_title, 'description' => $this->signer->request_description, 'status' => $this->signer->request_status] : null; + } + + $wa = Factory::getApplication()->getDocument()->getWebAssetManager(); + $wa->registerAndUseStyle('com_mokowaas.portal', 'com_mokowaas/portal.css'); + $wa->registerAndUseScript('com_mokowaas.signature-pad', 'com_mokowaas/signature-pad.js', [], ['defer' => true]); + + parent::display($tpl); + } +} diff --git a/source/packages/com_mokowaas/site/src/View/SignVerify/HtmlView.php b/source/packages/com_mokowaas/site/src/View/SignVerify/HtmlView.php new file mode 100644 index 00000000..988ccca4 --- /dev/null +++ b/source/packages/com_mokowaas/site/src/View/SignVerify/HtmlView.php @@ -0,0 +1,35 @@ +getInput()->get('hash', '', 'ALNUM'); + + if ($hash) { + $db = Factory::getDbo(); + $db->setQuery($db->getQuery(true)->select('id, ref, title, status, date_creation, date_signature')->from($db->quoteName('#__mokowaas_erp_esign_requests'))->where($db->quoteName('verification_hash') . ' = ' . $db->quote($hash))); + $this->request = $db->loadObject(); + + if ($this->request) { + $db->setQuery($db->getQuery(true)->select('role, email, firstname, lastname, status, date_signed, ip_address, geo_country, geo_city')->from($db->quoteName('#__mokowaas_erp_esign_signers'))->where($db->quoteName('request_id') . ' = ' . (int) $this->request->id)->order('position ASC')); + $this->request->signers = $db->loadObjectList() ?: []; + + $db->setQuery($db->getQuery(true)->select('code, label, ip, created')->from($db->quoteName('#__mokowaas_erp_esign_events'))->where($db->quoteName('request_id') . ' = ' . (int) $this->request->id)->order('created ASC')); + $this->request->events = $db->loadObjectList() ?: []; + } + } + + Factory::getApplication()->getDocument()->getWebAssetManager() + ->registerAndUseStyle('com_mokowaas.portal', 'com_mokowaas/portal.css'); + parent::display($tpl); + } +} diff --git a/source/packages/com_mokowaas/site/tmpl/invoice/default.php b/source/packages/com_mokowaas/site/tmpl/invoice/default.php new file mode 100644 index 00000000..073094e4 --- /dev/null +++ b/source/packages/com_mokowaas/site/tmpl/invoice/default.php @@ -0,0 +1,39 @@ +invoice; +?> +
+ My Invoices +
+
+

escape($inv->ref); ?>

+ status); ?> +
+
+
+
Due Date
escape($inv->due_date ?? 'On receipt'); ?>
+
Balance Due
$balance_due, 2); ?>
+
Created
escape($inv->created); ?>
+
+ + + + items as $item) : ?> + + + + + + + + + + + + + +
DescriptionQtyPriceTotal
escape($item->description); ?>quantity, 2); ?>$unit_price, 2); ?>$line_total, 2); ?>
Subtotal$subtotal, 2); ?>
Tax$tax_total, 2); ?>
Total$total, 2); ?>
+
+
+
diff --git a/source/packages/com_mokowaas/site/tmpl/invoices/default.php b/source/packages/com_mokowaas/site/tmpl/invoices/default.php new file mode 100644 index 00000000..60b1979f --- /dev/null +++ b/source/packages/com_mokowaas/site/tmpl/invoices/default.php @@ -0,0 +1,31 @@ + +
+
+

My Invoices

+ Portal +
+
+ + + + items as $inv) : + $isOverdue = $inv->due_date && $inv->due_date < date('Y-m-d') && \in_array($inv->status, ['sent', 'partial', 'overdue']); + ?> + + + + + + + + + + + items)) : ?> + +
RefStatusTotalPaidBalanceDueDate
escape($inv->ref); ?>status); ?>$total, 2); ?>$amount_paid, 2); ?>$balance_due, 2); ?>escape($inv->due_date ?? '—'); ?>escape($inv->created); ?>
No invoices found
+
+
diff --git a/source/packages/com_mokowaas/site/tmpl/license/default.php b/source/packages/com_mokowaas/site/tmpl/license/default.php new file mode 100644 index 00000000..ea29b69d --- /dev/null +++ b/source/packages/com_mokowaas/site/tmpl/license/default.php @@ -0,0 +1,58 @@ +licenseData; +?> +
+
+

License & Subscription

+ Portal +
+ +
+
Current License
+
+
+
+
Package
+
escape($lic->package); ?>
+
+
+
Status
+
valid ? 'Active' : 'Invalid'; ?>
+
+
+
Expires
+
expiry ? $this->escape($lic->expiry) : 'No expiry'; ?>
+
+
+ + services)) : ?> +
+
Active Services
+
+ services as $svc) : ?> + escape($svc)); ?> + +
+ +
+
+ +
+
Update License Key
+
+
+
+ + +
Enter or update your license key to activate features.
+
+ + +
+
+
+
diff --git a/source/packages/com_mokowaas/site/tmpl/order/default.php b/source/packages/com_mokowaas/site/tmpl/order/default.php new file mode 100644 index 00000000..e22c03a4 --- /dev/null +++ b/source/packages/com_mokowaas/site/tmpl/order/default.php @@ -0,0 +1,35 @@ +order; +?> +
+ My Orders +
+
+

escape($o->ref); ?>

+ status); ?> +
+
+ + + + items as $item) : ?> + + + + + + + + + + + + + + +
SKUDescriptionQtyPriceTotal
escape($item->sku ?? ''); ?>escape($item->description); ?>quantity, 2); ?>$unit_price, 2); ?>$line_total, 2); ?>
Subtotal$subtotal, 2); ?>
Tax$tax_total, 2); ?>
Total$total, 2); ?>
+
+
+
diff --git a/source/packages/com_mokowaas/site/tmpl/orders/default.php b/source/packages/com_mokowaas/site/tmpl/orders/default.php new file mode 100644 index 00000000..916dc545 --- /dev/null +++ b/source/packages/com_mokowaas/site/tmpl/orders/default.php @@ -0,0 +1,27 @@ + +
+
+

My Orders

+ Portal +
+
+ + + + items as $order) : ?> + + + + + + + + + items)) : ?> + +
RefStatusPaymentTotalDate
escape($order->ref); ?>status); ?>payment_status); ?>$total, 2); ?>escape($order->created); ?>
No orders found
+
+
diff --git a/source/packages/com_mokowaas/site/tmpl/portal/default.php b/source/packages/com_mokowaas/site/tmpl/portal/default.php new file mode 100644 index 00000000..01340112 --- /dev/null +++ b/source/packages/com_mokowaas/site/tmpl/portal/default.php @@ -0,0 +1,96 @@ +dashboard; +$user = \Joomla\CMS\Factory::getUser(); +?> + +
+

Welcome, escape($user->name); ?>

+ + contactId) : ?> +
Your account is not linked to an ERP contact. Please contact support.
+ + +
+
+
+
+
open_orders; ?>
+
Open Orders
+
+ +
+
+
+
+
+
unpaid_invoices; ?>
+
Unpaid Invoices
+ total_due > 0) : ?>
$total_due, 2); ?> due
+
+ +
+
+
+
+
+
open_tickets; ?>
+
Open Tickets
+
+ +
+
+
+
+
+
pending_signatures; ?>
+
Pending Signatures
+
+ +
+
+
+ + + recent_orders)) : ?> +
+
+
Recent Orders
+ View All +
+
+ + + + recent_orders as $order) : ?> + + + + + + + + +
RefStatusTotalDate
escape($order->ref); ?>status); ?>$total, 2); ?>escape($order->created); ?>
+
+
+ + + + + +
diff --git a/source/packages/com_mokowaas/site/tmpl/sign/default.php b/source/packages/com_mokowaas/site/tmpl/sign/default.php new file mode 100644 index 00000000..f658b58f --- /dev/null +++ b/source/packages/com_mokowaas/site/tmpl/sign/default.php @@ -0,0 +1,75 @@ +signer; +$request = $this->request; +$token = \Joomla\CMS\Factory::getApplication()->getInput()->get('token', '', 'ALNUM'); +?> + +
+ +
Invalid or expired signing link.
+ status === 'signed') : ?> +
Already signed. You have already signed this document on escape($signer->date_signed); ?>.
+ status, ['pending', 'inprogress'])) : ?> +
This signing request is no longer active (status: escape($request->status); ?>).
+ + +
+

escape($request->title); ?>

+
+ description) : ?> +
+ escape($request->description)); ?> +
+ + +
+ + require_consent && !$signer->consent_accepted) : ?> +
+
+ + +
+
+ + + +
+ +
+ +
+ +
+ + + require_selfie) : ?> +
+ +
+ +
+ + + + require_id) : ?> +
+ +
+ +
+ + +
+ + +
+
+
+
+ +
diff --git a/source/packages/com_mokowaas/site/tmpl/signverify/default.php b/source/packages/com_mokowaas/site/tmpl/signverify/default.php new file mode 100644 index 00000000..504eb3c0 --- /dev/null +++ b/source/packages/com_mokowaas/site/tmpl/signverify/default.php @@ -0,0 +1,64 @@ +request; +?> +
+ +
Verification not found. Check the verification link.
+ +
+
+

Certificate of Verification

+
Electronic Signature Verification
+
+
+
+ status === 'completed') : ?> +
This document has been fully signed and is legally valid.
+ +
Status: status); ?> — this document has not been fully signed.
+ +
+
+
Reference
escape($req->ref); ?>
+
Title
escape($req->title); ?>
+
Completed
escape($req->date_signature ?? 'Pending'); ?>
+
+ +
Signers
+ + + + signers as $s) : + $name = trim(($s->firstname ?? '') . ' ' . ($s->lastname ?? '')) ?: '—'; + $loc = implode(', ', array_filter([$s->geo_city ?? '', $s->geo_country ?? ''])) ?: '—'; + ?> + + + + + + + + + +
NameEmailStatusSignedLocation
escape($name); ?>escape($s->email); ?>status); ?>escape($s->date_signed ?? '—'); ?>escape($loc); ?>
+ +
Audit Trail
+ + + + events as $ev) : ?> + + + + + + + + +
TimeEventDescriptionIP
escape($ev->created); ?>escape($ev->code); ?>escape($ev->label); ?>escape($ev->ip ?? '—'); ?>
+
+
+ +
From 969f7fb61567d795af9a3bd77122a24a0d46d3c6 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 15:08:46 -0500 Subject: [PATCH 13/73] feat: expanded catalog with all Joomla repos + download key warning - catalog.xml: added MokoWaaSBase, MokoJoomBackup, MokoJoomCommunity, MokoJoomCross, MokoJoomStoreLocator (11 total extensions) - ExtensionsModel: fetchFromUpdateServer() now returns has_stable, has_dev, needs_dlid flags from updates.xml parsing - ExtensionsModel: hasDownloadKey() checks if dlid is configured in update_sites for each extension - Template: red alert badge when download key is missing on installed extensions that require one for updates Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) --- .../packages/com_mokowaas/admin/catalog.xml | 84 +++++++++++++------ .../admin/src/Model/ExtensionsModel.php | 68 ++++++++++++++- .../admin/tmpl/extensions/default.php | 8 ++ 3 files changed, 131 insertions(+), 29 deletions(-) diff --git a/source/packages/com_mokowaas/admin/catalog.xml b/source/packages/com_mokowaas/admin/catalog.xml index 2122651b..d0ff139d 100644 --- a/source/packages/com_mokowaas/admin/catalog.xml +++ b/source/packages/com_mokowaas/admin/catalog.xml @@ -1,11 +1,11 @@ @@ -19,6 +19,16 @@ true https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/raw/branch/dev/updates.xml + + MokoWaaSBase + pkg_mokowaasbase + package + Centralized control panel for managing all MokoWaaS client installations. + icon-tachometer-alt + Platform +
https://mokoconsulting.tech/support/products/mokowaas-base
+ https://git.mokoconsulting.tech/MokoConsulting/MokoWaaSBase/raw/branch/dev/updates.xml +
MokoOnyx mokoonyx @@ -30,14 +40,24 @@ https://git.mokoconsulting.tech/MokoConsulting/MokoOnyx/raw/branch/dev/updates.xml - MokoJoomTOS - com_mokojoomtos - component - Terms of Service and privacy policy component with consent tracking. - icon-file-contract - Components -
https://mokoconsulting.tech/support/products/mokojoomtos
- https://git.mokoconsulting.tech/MokoConsulting/MokoJoomTOS/raw/branch/dev/updates.xml + MokoJoomOpenGraph + pkg_mokoog + package + Open Graph, Twitter Card, and social sharing meta tags for articles, categories, and pages. + icon-share-alt + SEO +
https://mokoconsulting.tech/support/products/mokojoomopengraph
+ https://git.mokoconsulting.tech/MokoConsulting/MokoJoomOpenGraph/raw/branch/dev/updates.xml +
+ + MokoJoomBackup + pkg_mokojoombackup + package + Automated backup system with Borg integration, scheduled tasks, and remote storage. + icon-archive + Tools +
https://mokoconsulting.tech/support/products/mokojoombackup
+ https://git.mokoconsulting.tech/MokoConsulting/MokoJoomBackup/raw/branch/dev/updates.xml
MokoJoomHero @@ -50,14 +70,34 @@ https://git.mokoconsulting.tech/MokoConsulting/MokoJoomHero/raw/branch/dev/updates.xml - MokoWaaS Announce - mod_mokowaas_announce + MokoJoomCommunity + pkg_mokojoomcommunity + package + Community Builder integration package with custom fields and user management. + icon-users + Community +
https://mokoconsulting.tech/support/products/mokojoomcommunity
+ https://git.mokoconsulting.tech/MokoConsulting/MokoJoomCommunity/raw/branch/dev/updates.xml +
+ + MokoJoomCross + plg_system_mokojoomcross + plugin + Cross-extension integration plugin for Joomla component interoperability. + icon-link + Plugins +
https://mokoconsulting.tech/support/products/mokojoomcross
+ https://git.mokoconsulting.tech/MokoConsulting/MokoJoomCross/raw/branch/dev/updates.xml +
+ + MokoJoomStoreLocator + mod_mokojoomstorelocator module - Centralized announcement system via admin module. - icon-bullhorn + Store locator module with Google Maps integration and search. + icon-map-marker-alt Modules -
https://mokoconsulting.tech/support/products/mokowaas-announce
- https://git.mokoconsulting.tech/MokoConsulting/MokoWaaSAnnounce/raw/branch/dev/updates.xml +
https://mokoconsulting.tech/support/products/mokojoomstorelocator
+ https://git.mokoconsulting.tech/MokoConsulting/MokoJoomStoreLocator/raw/branch/dev/updates.xml
DPCalendar API @@ -79,14 +119,4 @@
https://mokoconsulting.tech/support/products/mokogallerycalendar
https://git.mokoconsulting.tech/MokoConsulting/MokoGalleryCalendar/raw/branch/dev/updates.xml
- - MokoJoomOpenGraph - pkg_mokoog - package - Open Graph, Twitter Card, and social sharing meta tags for articles, categories, and pages. - icon-share-alt - Components -
https://mokoconsulting.tech/support/products/mokojoomopengraph
- https://git.mokoconsulting.tech/MokoConsulting/MokoJoomOpenGraph/raw/branch/dev/updates.xml -
diff --git a/source/packages/com_mokowaas/admin/src/Model/ExtensionsModel.php b/source/packages/com_mokowaas/admin/src/Model/ExtensionsModel.php index cc42dd3e..0eb1db48 100644 --- a/source/packages/com_mokowaas/admin/src/Model/ExtensionsModel.php +++ b/source/packages/com_mokowaas/admin/src/Model/ExtensionsModel.php @@ -62,6 +62,9 @@ class ExtensionsModel extends BaseDatabaseModel $extensionId = $this->getExtensionId($entry['element']); + $needsDlid = $release['needs_dlid'] ?? false; + $hasDlid = $needsDlid && $extensionId ? $this->hasDownloadKey($entry['element']) : false; + $packages[] = (object) [ 'label' => $entry['name'], 'description' => $entry['description'], @@ -76,6 +79,9 @@ class ExtensionsModel extends BaseDatabaseModel 'article_url' => $entry['article'] ?? '', 'protected' => ($entry['protected'] ?? 'false') === 'true', 'extension_id' => $extensionId, + 'needs_dlid' => $needsDlid, + 'has_dlid' => $hasDlid, + 'has_stable' => $release['has_stable'] ?? false, ]; } @@ -226,13 +232,36 @@ class ExtensionsModel extends BaseDatabaseModel return []; } - // Find the highest version entry + // Determine site's update channel preference + $channel = 'dev'; // default to dev — show everything + $hasStable = false; + $hasDev = false; + + // Find the best version entry, preferring the site's channel $bestVersion = '0.0.0'; $downloadUrl = ''; + $needsDlid = false; foreach ($xml->update as $update) { $ver = (string) ($update->version ?? ''); + $tag = ''; + + // Check for element + if (isset($update->tags->tag)) + { + $tag = (string) $update->tags->tag; + } + + if ($tag === 'stable') + { + $hasStable = true; + } + + if ($tag === 'dev') + { + $hasDev = true; + } if ($ver === '' || version_compare($ver, $bestVersion, '<=')) { @@ -241,10 +270,15 @@ class ExtensionsModel extends BaseDatabaseModel $bestVersion = $ver; - // Get download URL from if (isset($update->downloads->downloadurl)) { $downloadUrl = (string) $update->downloads->downloadurl; + + // Check if download URL contains dlid placeholder + if (str_contains($downloadUrl, 'dlid=')) + { + $needsDlid = true; + } } } @@ -256,6 +290,9 @@ class ExtensionsModel extends BaseDatabaseModel return [ 'version' => $bestVersion, 'download_url' => $downloadUrl, + 'has_stable' => $hasStable, + 'has_dev' => $hasDev, + 'needs_dlid' => $needsDlid, ]; } @@ -299,6 +336,33 @@ class ExtensionsModel extends BaseDatabaseModel return $versions; } + /** + * Check if an extension has a download key configured. + */ + private function hasDownloadKey(string $element): bool + { + try + { + $db = $this->getDatabase(); + + $query = $db->getQuery(true) + ->select($db->quoteName('us.extra_query')) + ->from($db->quoteName('#__update_sites', 'us')) + ->join('INNER', $db->quoteName('#__update_sites_extensions', 'use') . ' ON us.update_site_id = use.update_site_id') + ->join('INNER', $db->quoteName('#__extensions', 'e') . ' ON e.extension_id = use.extension_id') + ->where($db->quoteName('e.element') . ' = ' . $db->quote($element)); + + $db->setQuery($query, 0, 1); + $extraQuery = (string) $db->loadResult(); + + return !empty($extraQuery) && str_contains($extraQuery, 'dlid='); + } + catch (\Throwable $e) + { + return false; + } + } + /** * Get the extension_id for an element (for uninstall links). * diff --git a/source/packages/com_mokowaas/admin/tmpl/extensions/default.php b/source/packages/com_mokowaas/admin/tmpl/extensions/default.php index 4ffca746..54bcff70 100644 --- a/source/packages/com_mokowaas/admin/tmpl/extensions/default.php +++ b/source/packages/com_mokowaas/admin/tmpl/extensions/default.php @@ -60,6 +60,14 @@ $statusBadge = [

description); ?>

+ needs_dlid) && !$pkg->has_dlid && $pkg->status !== 'not_installed'): ?> +
+ + Download key missing — updates will fail. + Configure +
+ +
local_version): ?> From 64a11706fd1f821c08461dff7b0b11d8591cfe0a Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sat, 6 Jun 2026 20:09:45 +0000 Subject: [PATCH 14/73] chore(version): pre-release bump to 02.34.22-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- .../plg_webservices_perfectpublisher/perfectpublisher.xml | 2 +- .../plg_webservices_perfectpublisher/services/provider.php | 2 +- .../src/Extension/PerfectPublisherApi.php | 2 +- source/pkg_mokowaas.xml | 2 +- 45 files changed, 55 insertions(+), 55 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 85b99cff..c8876612 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.21 + 02.34.22 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index f4c71fbd..06ea0239 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.21 +# VERSION: 02.34.22 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index f5a2a285..c2291f4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.21 + VERSION: 02.34.22 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 7525b98c..4025b068 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.21 + VERSION: 02.34.22 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index a1bbd64c..146d820a 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.21 + VERSION: 02.34.22 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index e63a14b1..e0fe70af 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.21 + VERSION: 02.34.22 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index 2402bf0e..9b3e3504 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.21 + VERSION: 02.34.22 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index 123bce4a..29a9e676 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.21 +VERSION: 02.34.22 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index 8a68dfef..623e598e 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.21 + VERSION: 02.34.22 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.21) +# MokoWaaS Build Guide (VERSION: 02.34.22) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index bf9b16d3..f2bcb202 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.21 + VERSION: 02.34.22 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.21) +# MokoWaaS Configuration Guide (VERSION: 02.34.22) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index e15fe8c5..c6654b4e 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.21 + VERSION: 02.34.22 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.21) +# MokoWaaS Installation Guide (VERSION: 02.34.22) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index 0b3b9f2e..56ce29e8 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.21 + VERSION: 02.34.22 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.21) +# MokoWaaS Operations Guide (VERSION: 02.34.22) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index 7a57a1e2..0ba1d6d0 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.21 + VERSION: 02.34.22 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.21) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.22) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index cc128e99..4bcd664f 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.21 + VERSION: 02.34.22 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.21) +# MokoWaaS Testing Guide (VERSION: 02.34.22) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index b664120b..940ea8dc 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.21 + VERSION: 02.34.22 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.21) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.22) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index 3ee938b7..92d39b7c 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.21 + VERSION: 02.34.22 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.21) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.22) ## Introduction diff --git a/docs/index.md b/docs/index.md index 0fb0dcb4..33d20fa1 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.21 + VERSION: 02.34.22 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.21) +# MokoWaaS Documentation Index (VERSION: 02.34.22) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index 2b371e83..bdcaf98c 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.21 + VERSION: 02.34.22 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.21) +# MokoWaaS Plugin Overview (VERSION: 02.34.22) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index ba293e2f..ce78d430 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.21 +VERSION: 02.34.22 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index df6f5e21..66247539 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.21-dev + 02.34.22-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index 059e8244..02305090 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.21-dev + 02.34.22-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index 99b6e556..993bca04 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.21-dev + 02.34.22-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index e60f9865..b2feae06 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.21-dev + 02.34.22-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index 74cca12c..738a043d 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.21-dev + 02.34.22-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 4f4d0648..d68d1f0b 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.21 + * VERSION: 02.34.22 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index a68b9ece..94056cde 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.21 + * VERSION: 02.34.22 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index add460e9..c4d9154d 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.21-dev + 02.34.22-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index c9bc7f9b..8e46629a 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.21 + * VERSION: 02.34.22 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index bd09f5db..db8882ae 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.21 + * VERSION: 02.34.22 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index b0037621..f105831a 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.21-dev + 02.34.22-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index b9678cdf..3e23f613 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.21-dev + 02.34.22-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index 257b30df..fe5c7acf 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.21-dev + 02.34.22-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index dd404e12..9a80b4fa 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.21-dev + 02.34.22-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index fbe6797f..87daf94e 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.21-dev + 02.34.22-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index 337f8295..b05a9b15 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.21-dev + 02.34.22-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index b67e7dcf..ede3c894 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.21-dev + 02.34.22-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index 952869a7..606f7093 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.21 + * VERSION: 02.34.22 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 09de7779..f324ced9 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.21-dev + 02.34.22-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index efa92b01..45ff6106 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.21 + * VERSION: 02.34.22 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index dbec7250..c23c01c4 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.21 + * VERSION: 02.34.22 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index 6296e9fe..9e279294 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.21-dev + 02.34.22-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml index cdbe1649..07c11a2f 100644 --- a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml +++ b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.21-dev + 02.34.22-dev Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds. Moko\Plugin\WebServices\PerfectPublisher diff --git a/source/packages/plg_webservices_perfectpublisher/services/provider.php b/source/packages/plg_webservices_perfectpublisher/services/provider.php index 00302ae5..be92eccf 100644 --- a/source/packages/plg_webservices_perfectpublisher/services/provider.php +++ b/source/packages/plg_webservices_perfectpublisher/services/provider.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/services/provider.php - * VERSION: 02.34.21 + * VERSION: 02.34.22 * BRIEF: DI service provider for Perfect Publisher Web Services plugin */ diff --git a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php index 1541d4ba..ca9f1777 100644 --- a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php +++ b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php - * VERSION: 02.34.21 + * VERSION: 02.34.22 * BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet) */ diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index b399c791..a5be581d 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.21-dev + 02.34.22-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From 5ab496b399d42ade5168755913db406f08827a0e Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 15:13:43 -0500 Subject: [PATCH 15/73] fix: backup download keys in preflight, not postflight Joomla's package installer deletes and recreates update site rows from the manifest BETWEEN preflight and postflight. By the time postflight ran backupDownloadKeys(), the extra_query values were already empty. Moved the backup to preflight() via a class property. The restore in postflight() now uses keys saved before Joomla touched them. Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) --- source/script.php | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/source/script.php b/source/script.php index 241c05d3..b56a8491 100644 --- a/source/script.php +++ b/source/script.php @@ -39,8 +39,16 @@ class Pkg_MokowaasInstallerScript * with no default, causing INSERT failures when Joomla's package installer * creates placeholder rows before processing sub-extension manifests. */ + /** @var array Download keys saved before Joomla wipes update sites */ + private array $savedDownloadKeys = []; + public function preflight($type, $parent) { + // CRITICAL: backup download keys BEFORE Joomla's installer wipes update sites. + // Joomla deletes and recreates #__update_sites rows from the manifest + // between preflight and postflight, clearing extra_query (dlid). + $this->savedDownloadKeys = $this->backupDownloadKeys(); + try { $db = Factory::getDbo(); @@ -95,17 +103,14 @@ class Pkg_MokowaasInstallerScript // Mark MokoWaaS extensions as protected (prevents disable/uninstall at framework level) $this->protectExtensions(); - // Save download keys before any update site manipulation - $savedKeys = $this->backupDownloadKeys(); - // Migrate all Moko update server URLs to new format $this->migrateUpdateServerUrls(); // Clean up stale/duplicate update sites $this->cleanupStaleUpdateSites(); - // Restore download keys that were wiped by cleanup/migration - $this->restoreDownloadKeys($savedKeys); + // Restore download keys saved in preflight (before Joomla wiped them) + $this->restoreDownloadKeys($this->savedDownloadKeys); // Fix orphaned update records (extension_id=0) $this->fixUpdateRecords(); From 3b5b0c1a73837ae016ea4741b6068ceb4add94ed Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sat, 6 Jun 2026 20:15:22 +0000 Subject: [PATCH 16/73] chore(version): pre-release bump to 02.34.23-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- .../plg_webservices_perfectpublisher/perfectpublisher.xml | 2 +- .../plg_webservices_perfectpublisher/services/provider.php | 2 +- .../src/Extension/PerfectPublisherApi.php | 2 +- source/pkg_mokowaas.xml | 2 +- 45 files changed, 55 insertions(+), 55 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index c8876612..6a3cc36a 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.22 + 02.34.23 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 06ea0239..db90ffc2 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.22 +# VERSION: 02.34.23 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index c2291f4e..57e3ba32 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.22 + VERSION: 02.34.23 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 4025b068..5575f1f2 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.22 + VERSION: 02.34.23 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 146d820a..6099d743 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.22 + VERSION: 02.34.23 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index e0fe70af..cf58a197 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.22 + VERSION: 02.34.23 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index 9b3e3504..8750769e 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.22 + VERSION: 02.34.23 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index 29a9e676..ae7dff68 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.22 +VERSION: 02.34.23 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index 623e598e..fd07f25b 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.22 + VERSION: 02.34.23 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.22) +# MokoWaaS Build Guide (VERSION: 02.34.23) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index f2bcb202..692ce94a 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.22 + VERSION: 02.34.23 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.22) +# MokoWaaS Configuration Guide (VERSION: 02.34.23) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index c6654b4e..3d01f4d8 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.22 + VERSION: 02.34.23 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.22) +# MokoWaaS Installation Guide (VERSION: 02.34.23) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index 56ce29e8..1334bfd7 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.22 + VERSION: 02.34.23 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.22) +# MokoWaaS Operations Guide (VERSION: 02.34.23) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index 0ba1d6d0..26d9440d 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.22 + VERSION: 02.34.23 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.22) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.23) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index 4bcd664f..aaf24446 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.22 + VERSION: 02.34.23 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.22) +# MokoWaaS Testing Guide (VERSION: 02.34.23) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index 940ea8dc..377782dd 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.22 + VERSION: 02.34.23 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.22) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.23) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index 92d39b7c..a3f62e31 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.22 + VERSION: 02.34.23 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.22) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.23) ## Introduction diff --git a/docs/index.md b/docs/index.md index 33d20fa1..7895acc5 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.22 + VERSION: 02.34.23 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.22) +# MokoWaaS Documentation Index (VERSION: 02.34.23) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index bdcaf98c..9f87f785 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.22 + VERSION: 02.34.23 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.22) +# MokoWaaS Plugin Overview (VERSION: 02.34.23) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index ce78d430..f01da2e2 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.22 +VERSION: 02.34.23 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index 66247539..67a8f030 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.22-dev + 02.34.23-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index 02305090..1adaf4bf 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.22-dev + 02.34.23-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index 993bca04..ebc7793c 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.22-dev + 02.34.23-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index b2feae06..ce7ed1f8 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.22-dev + 02.34.23-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index 738a043d..39107ef1 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.22-dev + 02.34.23-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index d68d1f0b..ba50c39b 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.22 + * VERSION: 02.34.23 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index 94056cde..bb877561 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.22 + * VERSION: 02.34.23 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index c4d9154d..3b203545 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.22-dev + 02.34.23-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index 8e46629a..9506c2ac 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.22 + * VERSION: 02.34.23 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index db8882ae..939f98b6 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.22 + * VERSION: 02.34.23 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index f105831a..213a597f 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.22-dev + 02.34.23-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index 3e23f613..e21e6b39 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.22-dev + 02.34.23-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index fe5c7acf..a5bf9dfe 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.22-dev + 02.34.23-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index 9a80b4fa..f4656cb5 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.22-dev + 02.34.23-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index 87daf94e..ff11c044 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.22-dev + 02.34.23-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index b05a9b15..e6d8aafa 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.22-dev + 02.34.23-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index ede3c894..1c27275d 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.22-dev + 02.34.23-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index 606f7093..1a1e091f 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.22 + * VERSION: 02.34.23 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index f324ced9..5fb4f12b 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.22-dev + 02.34.23-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index 45ff6106..ca8b5113 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.22 + * VERSION: 02.34.23 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index c23c01c4..305ec512 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.22 + * VERSION: 02.34.23 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index 9e279294..7ef332f4 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.22-dev + 02.34.23-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml index 07c11a2f..60ef9a55 100644 --- a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml +++ b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.22-dev + 02.34.23-dev Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds. Moko\Plugin\WebServices\PerfectPublisher diff --git a/source/packages/plg_webservices_perfectpublisher/services/provider.php b/source/packages/plg_webservices_perfectpublisher/services/provider.php index be92eccf..5463ec7c 100644 --- a/source/packages/plg_webservices_perfectpublisher/services/provider.php +++ b/source/packages/plg_webservices_perfectpublisher/services/provider.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/services/provider.php - * VERSION: 02.34.22 + * VERSION: 02.34.23 * BRIEF: DI service provider for Perfect Publisher Web Services plugin */ diff --git a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php index ca9f1777..82790b84 100644 --- a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php +++ b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php - * VERSION: 02.34.22 + * VERSION: 02.34.23 * BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet) */ diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index a5be581d..dbba2a5e 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.22-dev + 02.34.23-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From 38dd78fdab752e31691729bb5fd16b3d1e767c00 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 15:18:36 -0500 Subject: [PATCH 17/73] fix: preserveDownloadKeys matches by URL when IDs change When Joomla deletes and recreates update site rows, they get new IDs. The backup was keyed only by ID, so restored keys couldn't match the new rows. Now stores keys by both ID and URL (url:https://...) and looks up by URL as fallback when the ID doesn't match. Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) --- .../Extension/MokoWaaS.php | 35 ++++++++++++++----- 1 file changed, 26 insertions(+), 9 deletions(-) diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index d68d1f0b..a00582a3 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -2265,18 +2265,33 @@ class MokoWaaS extends CMSPlugin implements BootableExtensionInterface $restored = 0; $updated = false; + // Build a URL-keyed lookup from the backup for matching after ID changes + $backupByUrl = []; + + foreach ($backup as $bKey => $bVal) + { + if (str_starts_with((string) $bKey, 'url:')) + { + $backupByUrl[substr((string) $bKey, 4)] = $bVal; + } + } + foreach ($sites as $id => $site) { $currentKey = trim((string) $site->extra_query); - $backupKey = $backup[$id] ?? ''; + $location = (string) $site->location; + + // Try matching by ID first, then by URL + $backupKey = $backup[$id] ?? $backupByUrl[$location] ?? ''; if ($currentKey !== '') { - // Site has a key — update backup if changed - if ($currentKey !== $backupKey) + // Site has a key — update backup (by ID and URL) + if ($currentKey !== ($backup[$id] ?? '')) { - $backup[$id] = $currentKey; - $updated = true; + $backup[$id] = $currentKey; + $backup['url:' . $location] = $currentKey; + $updated = true; } } elseif ($backupKey !== '') @@ -2289,16 +2304,18 @@ class MokoWaaS extends CMSPlugin implements BootableExtensionInterface ->where($db->quoteName('update_site_id') . ' = ' . (int) $id) )->execute(); + // Update backup with new ID + $backup[$id] = $backupKey; + $backup['url:' . $location] = $backupKey; + $updated = true; $restored++; } } - // Clean up backup entries for update sites that no longer exist - $currentIds = array_keys($sites); - + // Clean up backup entries for IDs that no longer exist (keep URL keys) foreach (array_keys($backup) as $backupId) { - if (!isset($sites[$backupId])) + if (is_numeric($backupId) && !isset($sites[$backupId])) { unset($backup[$backupId]); $updated = true; From dacf707165f123c3f649c8466812e25f27e49a95 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sat, 6 Jun 2026 20:20:10 +0000 Subject: [PATCH 18/73] chore(version): pre-release bump to 02.34.24-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- .../plg_webservices_perfectpublisher/perfectpublisher.xml | 2 +- .../plg_webservices_perfectpublisher/services/provider.php | 2 +- .../src/Extension/PerfectPublisherApi.php | 2 +- source/pkg_mokowaas.xml | 2 +- 45 files changed, 55 insertions(+), 55 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 6a3cc36a..fce03eae 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.23 + 02.34.24 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index db90ffc2..32c9df1c 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.23 +# VERSION: 02.34.24 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 57e3ba32..e3abca8e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.23 + VERSION: 02.34.24 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 5575f1f2..81a4c3f0 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.23 + VERSION: 02.34.24 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 6099d743..281a3119 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.23 + VERSION: 02.34.24 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index cf58a197..f831b956 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.23 + VERSION: 02.34.24 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index 8750769e..bbf054ba 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.23 + VERSION: 02.34.24 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index ae7dff68..2dc23672 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.23 +VERSION: 02.34.24 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index fd07f25b..19342075 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.23 + VERSION: 02.34.24 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.23) +# MokoWaaS Build Guide (VERSION: 02.34.24) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index 692ce94a..59654bfc 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.23 + VERSION: 02.34.24 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.23) +# MokoWaaS Configuration Guide (VERSION: 02.34.24) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index 3d01f4d8..82be559c 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.23 + VERSION: 02.34.24 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.23) +# MokoWaaS Installation Guide (VERSION: 02.34.24) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index 1334bfd7..e3e57eee 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.23 + VERSION: 02.34.24 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.23) +# MokoWaaS Operations Guide (VERSION: 02.34.24) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index 26d9440d..27bbf575 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.23 + VERSION: 02.34.24 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.23) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.24) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index aaf24446..d163a3c2 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.23 + VERSION: 02.34.24 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.23) +# MokoWaaS Testing Guide (VERSION: 02.34.24) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index 377782dd..8b9a1269 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.23 + VERSION: 02.34.24 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.23) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.24) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index a3f62e31..cd83fcd5 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.23 + VERSION: 02.34.24 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.23) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.24) ## Introduction diff --git a/docs/index.md b/docs/index.md index 7895acc5..5931aa92 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.23 + VERSION: 02.34.24 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.23) +# MokoWaaS Documentation Index (VERSION: 02.34.24) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index 9f87f785..fa4c2541 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.23 + VERSION: 02.34.24 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.23) +# MokoWaaS Plugin Overview (VERSION: 02.34.24) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index f01da2e2..b0270bc4 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.23 +VERSION: 02.34.24 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index 67a8f030..20925cf4 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.23-dev + 02.34.24-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index 1adaf4bf..b350deaf 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.23-dev + 02.34.24-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index ebc7793c..ce573fd4 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.23-dev + 02.34.24-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index ce7ed1f8..e9824ce7 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.23-dev + 02.34.24-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index 39107ef1..a5f4a5aa 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.23-dev + 02.34.24-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 9f51e832..0f430ecd 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.23 + * VERSION: 02.34.24 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index bb877561..0fa341fa 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.23 + * VERSION: 02.34.24 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index 3b203545..43d0aece 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.23-dev + 02.34.24-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index 9506c2ac..8ff13267 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.23 + * VERSION: 02.34.24 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index 939f98b6..d9f8122a 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.23 + * VERSION: 02.34.24 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index 213a597f..1784f0cc 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.23-dev + 02.34.24-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index e21e6b39..158d54a2 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.23-dev + 02.34.24-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index a5bf9dfe..dc2dafa9 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.23-dev + 02.34.24-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index f4656cb5..f5ef0670 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.23-dev + 02.34.24-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index ff11c044..217078a2 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.23-dev + 02.34.24-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index e6d8aafa..4d17fed4 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.23-dev + 02.34.24-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index 1c27275d..aef68572 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.23-dev + 02.34.24-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index 1a1e091f..b494bfee 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.23 + * VERSION: 02.34.24 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 5fb4f12b..55cf5f36 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.23-dev + 02.34.24-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index ca8b5113..9f070581 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.23 + * VERSION: 02.34.24 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index 305ec512..a8330ff8 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.23 + * VERSION: 02.34.24 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index 7ef332f4..7096fcd2 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.23-dev + 02.34.24-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml index 60ef9a55..2694fe0d 100644 --- a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml +++ b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.23-dev + 02.34.24-dev Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds. Moko\Plugin\WebServices\PerfectPublisher diff --git a/source/packages/plg_webservices_perfectpublisher/services/provider.php b/source/packages/plg_webservices_perfectpublisher/services/provider.php index 5463ec7c..79e3d65f 100644 --- a/source/packages/plg_webservices_perfectpublisher/services/provider.php +++ b/source/packages/plg_webservices_perfectpublisher/services/provider.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/services/provider.php - * VERSION: 02.34.23 + * VERSION: 02.34.24 * BRIEF: DI service provider for Perfect Publisher Web Services plugin */ diff --git a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php index 82790b84..7a2e2745 100644 --- a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php +++ b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php - * VERSION: 02.34.23 + * VERSION: 02.34.24 * BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet) */ diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index dbba2a5e..bcc97563 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.23-dev + 02.34.24-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From fc068866d9ab7dd9481f31b932bc7f34214ae0c8 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 15:31:04 -0500 Subject: [PATCH 19/73] feat: database-backed download key preservation for all extensions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace JSON file backup with #__mokowaas_download_keys table as the persistent single source of truth for download keys. - Core plugin: syncKeysToTable() copies keys from Joomla to our table, applyKeysFromTable() re-applies from our table to Joomla. Runs on every admin page load — Joomla can wipe keys all it wants. - Install script: preflight saves to table, postflight re-applies. - ExtensionsModel: saveDownloadKey(), applyDownloadKey(), reapplyAllDownloadKeys() static method for install/update hooks. - Extension manager: prompt for download key on install, skip extensions with no release, show missing key warning badge. - Catalog: expanded to 11 Joomla extensions. Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) --- .../com_mokowaas/admin/sql/install.mysql.sql | 16 ++ .../admin/src/Model/ExtensionsModel.php | 139 +++++++++++ .../admin/tmpl/extensions/default.php | 32 ++- .../Extension/MokoWaaS.php | 216 ++++++++++-------- source/script.php | 169 ++++++++++++-- 5 files changed, 460 insertions(+), 112 deletions(-) diff --git a/source/packages/com_mokowaas/admin/sql/install.mysql.sql b/source/packages/com_mokowaas/admin/sql/install.mysql.sql index 0bd447a0..af34efcc 100644 --- a/source/packages/com_mokowaas/admin/sql/install.mysql.sql +++ b/source/packages/com_mokowaas/admin/sql/install.mysql.sql @@ -133,3 +133,19 @@ INSERT IGNORE INTO `#__mokowaas_retention_policies` (`id`, `content_type`, `rete (3, 'sessions', 7, 'delete', 1, 'Purge expired sessions older than 7 days'), (4, 'inactive_users', 730, 'anonymize', 0, 'Anonymize users inactive for 2 years (disabled by default)'), (5, 'closed_tickets', 365, 'anonymize', 0, 'Anonymize closed tickets older than 1 year (disabled by default)'); + +-- +-- Download Key Storage — persistent backup of extension download keys +-- that survives Joomla update site recreation +-- +CREATE TABLE IF NOT EXISTS `#__mokowaas_download_keys` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `element` VARCHAR(100) NOT NULL DEFAULT '' COMMENT 'Extension element name', + `location` VARCHAR(512) NOT NULL DEFAULT '' COMMENT 'Update server URL', + `dlid` VARCHAR(255) NOT NULL DEFAULT '' COMMENT 'Download key value', + `created` DATETIME NOT NULL, + `modified` DATETIME NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `idx_dlkey_element` (`element`), + KEY `idx_dlkey_location` (`location`(191)) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/source/packages/com_mokowaas/admin/src/Model/ExtensionsModel.php b/source/packages/com_mokowaas/admin/src/Model/ExtensionsModel.php index 0eb1db48..0095f702 100644 --- a/source/packages/com_mokowaas/admin/src/Model/ExtensionsModel.php +++ b/source/packages/com_mokowaas/admin/src/Model/ExtensionsModel.php @@ -48,6 +48,12 @@ class ExtensionsModel extends BaseDatabaseModel $remoteVersion = $release['version'] ?? ''; $downloadUrl = $release['download_url'] ?? ''; + // Skip extensions with no release available and not installed + if (empty($remoteVersion) && $localVersion === null) + { + continue; + } + $status = 'not_installed'; if ($localVersion !== null) @@ -363,6 +369,139 @@ class ExtensionsModel extends BaseDatabaseModel } } + /** + * Save a download key for a Moko extension. + * + * @param string $element Extension element name. + * @param string $dlid Download key value. + * @param string $location Update server URL (optional). + */ + public function saveDownloadKey(string $element, string $dlid, string $location = ''): void + { + $db = $this->getDatabase(); + $now = gmdate('Y-m-d H:i:s'); + + // Upsert — update if exists, insert if not + $db->setQuery( + $db->getQuery(true) + ->select('COUNT(*)') + ->from($db->quoteName('#__mokowaas_download_keys')) + ->where($db->quoteName('element') . ' = ' . $db->quote($element)) + ); + + if ((int) $db->loadResult() > 0) + { + $db->setQuery( + $db->getQuery(true) + ->update($db->quoteName('#__mokowaas_download_keys')) + ->set($db->quoteName('dlid') . ' = ' . $db->quote($dlid)) + ->set($db->quoteName('location') . ' = ' . $db->quote($location)) + ->set($db->quoteName('modified') . ' = ' . $db->quote($now)) + ->where($db->quoteName('element') . ' = ' . $db->quote($element)) + )->execute(); + } + else + { + $db->setQuery( + $db->getQuery(true) + ->insert($db->quoteName('#__mokowaas_download_keys')) + ->columns([$db->quoteName('element'), $db->quoteName('location'), $db->quoteName('dlid'), $db->quoteName('created'), $db->quoteName('modified')]) + ->values(implode(',', [ + $db->quote($element), + $db->quote($location), + $db->quote($dlid), + $db->quote($now), + $db->quote($now), + ])) + )->execute(); + } + + // Immediately apply to Joomla's update site + $this->applyDownloadKey($element, $dlid); + } + + /** + * Apply a stored download key to Joomla's update site for an extension. + */ + public function applyDownloadKey(string $element, string $dlid): void + { + $db = $this->getDatabase(); + + $db->setQuery( + $db->getQuery(true) + ->select('us.' . $db->quoteName('update_site_id')) + ->from($db->quoteName('#__update_sites', 'us')) + ->join('INNER', $db->quoteName('#__update_sites_extensions', 'use') . ' ON us.update_site_id = use.update_site_id') + ->join('INNER', $db->quoteName('#__extensions', 'e') . ' ON e.extension_id = use.extension_id') + ->where($db->quoteName('e.element') . ' = ' . $db->quote($element)) + ); + $siteIds = $db->loadColumn() ?: []; + + foreach ($siteIds as $siteId) + { + $db->setQuery( + $db->getQuery(true) + ->update($db->quoteName('#__update_sites')) + ->set($db->quoteName('extra_query') . ' = ' . $db->quote('dlid=' . $dlid)) + ->where($db->quoteName('update_site_id') . ' = ' . (int) $siteId) + )->execute(); + } + } + + /** + * Re-apply all stored Moko download keys to Joomla's update sites. + * Called after updates that may have wiped extra_query. + * + * @return int Number of keys re-applied. + */ + public static function reapplyAllDownloadKeys(): int + { + try + { + $db = Factory::getDbo(); + + $db->setQuery( + $db->getQuery(true) + ->select('*') + ->from($db->quoteName('#__mokowaas_download_keys')) + ->where($db->quoteName('dlid') . ' != ' . $db->quote('')) + ); + $keys = $db->loadObjectList() ?: []; + + $applied = 0; + + foreach ($keys as $key) + { + $db->setQuery( + $db->getQuery(true) + ->select('us.' . $db->quoteName('update_site_id')) + ->from($db->quoteName('#__update_sites', 'us')) + ->join('INNER', $db->quoteName('#__update_sites_extensions', 'use') . ' ON us.update_site_id = use.update_site_id') + ->join('INNER', $db->quoteName('#__extensions', 'e') . ' ON e.extension_id = use.extension_id') + ->where($db->quoteName('e.element') . ' = ' . $db->quote($key->element)) + ); + $siteIds = $db->loadColumn() ?: []; + + foreach ($siteIds as $siteId) + { + $db->setQuery( + $db->getQuery(true) + ->update($db->quoteName('#__update_sites')) + ->set($db->quoteName('extra_query') . ' = ' . $db->quote('dlid=' . $key->dlid)) + ->where($db->quoteName('update_site_id') . ' = ' . (int) $siteId) + )->execute(); + $applied++; + } + } + + return $applied; + } + catch (\Throwable $e) + { + return 0; + } + } + /** * Get the extension_id for an element (for uninstall links). * diff --git a/source/packages/com_mokowaas/admin/tmpl/extensions/default.php b/source/packages/com_mokowaas/admin/tmpl/extensions/default.php index 54bcff70..3332d30c 100644 --- a/source/packages/com_mokowaas/admin/tmpl/extensions/default.php +++ b/source/packages/com_mokowaas/admin/tmpl/extensions/default.php @@ -90,7 +90,9 @@ $statusBadge = [ data-url="" data-download="download_url); ?>" data-token="" - data-label="label); ?>"> + data-label="label); ?>" + data-needs-dlid="needs_dlid ? '1' : '0'; ?>" + data-element="element); ?>"> Update to remote_version); ?> @@ -99,7 +101,9 @@ $statusBadge = [ data-url="" data-download="download_url); ?>" data-token="" - data-label="label); ?>"> + data-label="label); ?>" + data-needs-dlid="needs_dlid ? '1' : '0'; ?>" + data-element="element); ?>"> Install @@ -158,15 +162,37 @@ document.addEventListener('DOMContentLoaded', function() { var token = el.dataset.token; var label = el.dataset.label; + var needsDlid = el.dataset.needsDlid === '1'; + var dlid = ''; + + if (needsDlid) { + dlid = prompt('Enter download key for ' + label + ':', ''); + if (dlid === null) return; + if (!dlid.trim()) { + Joomla.renderMessages({error: ['Download key is required for ' + label]}); + return; + } + } + if (!confirm('Install ' + label + '?')) return; el.disabled = true; var origHtml = el.textContent; el.textContent = ' Installing...'; + // Append dlid to download URL if provided + var finalUrl = downloadUrl; + if (dlid) { + finalUrl += (downloadUrl.indexOf('?') !== -1 ? '&' : '?') + 'dlid=' + encodeURIComponent(dlid.trim()); + } + var fd = new FormData(); - fd.append('download_url', downloadUrl); + fd.append('download_url', finalUrl); fd.append(token, '1'); + if (dlid) { + fd.append('dlid', dlid.trim()); + fd.append('element', el.dataset.element || ''); + } fetch(url, { method: 'POST', diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 9f51e832..d8345647 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -2243,102 +2243,134 @@ class MokoWaaS extends CMSPlugin implements BootableExtensionInterface { $db = Factory::getDbo(); - // Load current extra_query values for all update sites - $query = $db->getQuery(true) - ->select([ - $db->quoteName('update_site_id'), - $db->quoteName('extra_query'), - $db->quoteName('location'), - ]) - ->from($db->quoteName('#__update_sites')); - $db->setQuery($query); - $sites = $db->loadObjectList('update_site_id') ?: []; + // Sync: copy any new download keys FROM Joomla's update_sites TO our table + $this->syncKeysToTable($db); - $backupFile = JPATH_ADMINISTRATOR . '/cache/mokowaas_dlkeys.json'; - $backup = []; - - if (file_exists($backupFile)) - { - $backup = json_decode(file_get_contents($backupFile), true) ?: []; - } - - $restored = 0; - $updated = false; - - // Build a URL-keyed lookup from the backup for matching after ID changes - $backupByUrl = []; - - foreach ($backup as $bKey => $bVal) - { - if (str_starts_with((string) $bKey, 'url:')) - { - $backupByUrl[substr((string) $bKey, 4)] = $bVal; - } - } - - foreach ($sites as $id => $site) - { - $currentKey = trim((string) $site->extra_query); - $location = (string) $site->location; - - // Try matching by ID first, then by URL - $backupKey = $backup[$id] ?? $backupByUrl[$location] ?? ''; - - if ($currentKey !== '') - { - // Site has a key — update backup (by ID and URL) - if ($currentKey !== ($backup[$id] ?? '')) - { - $backup[$id] = $currentKey; - $backup['url:' . $location] = $currentKey; - $updated = true; - } - } - elseif ($backupKey !== '') - { - // Key was wiped — restore from backup - $db->setQuery( - $db->getQuery(true) - ->update($db->quoteName('#__update_sites')) - ->set($db->quoteName('extra_query') . ' = ' . $db->quote($backupKey)) - ->where($db->quoteName('update_site_id') . ' = ' . (int) $id) - )->execute(); - - // Update backup with new ID - $backup[$id] = $backupKey; - $backup['url:' . $location] = $backupKey; - $updated = true; - $restored++; - } - } - - // Clean up backup entries for IDs that no longer exist (keep URL keys) - foreach (array_keys($backup) as $backupId) - { - if (is_numeric($backupId) && !isset($sites[$backupId])) - { - unset($backup[$backupId]); - $updated = true; - } - } - - if ($updated || $restored > 0) - { - file_put_contents($backupFile, json_encode($backup, JSON_PRETTY_PRINT)); - } - - if ($restored > 0) - { - Log::add( - sprintf('MokoWaaS: restored %d download key(s) that were cleared by Joomla.', $restored), - Log::INFO, - 'mokowaas' - ); - } + // Apply: re-apply all stored keys FROM our table TO Joomla's update_sites + $this->applyKeysFromTable($db); } catch (\Throwable $e) { - // Non-critical — don't break the site over key backup + // Non-critical } } + + /** + * Copy non-empty download keys from Joomla's update_sites to our persistent table. + */ + private function syncKeysToTable($db): void + { + // Find all update sites with download keys + $db->setQuery( + $db->getQuery(true) + ->select([ + 'us.' . $db->quoteName('extra_query'), + 'us.' . $db->quoteName('location'), + 'e.' . $db->quoteName('element'), + ]) + ->from($db->quoteName('#__update_sites', 'us')) + ->join('INNER', $db->quoteName('#__update_sites_extensions', 'use') . ' ON us.update_site_id = use.update_site_id') + ->join('INNER', $db->quoteName('#__extensions', 'e') . ' ON e.extension_id = use.extension_id') + ->where($db->quoteName('us.extra_query') . ' LIKE ' . $db->quote('%dlid=%')) + ); + $rows = $db->loadObjectList() ?: []; + + $now = gmdate('Y-m-d H:i:s'); + + foreach ($rows as $row) + { + parse_str($row->extra_query, $parsed); + $dlid = $parsed['dlid'] ?? ''; + + if (empty($dlid)) + { + continue; + } + + // Upsert into our table + $db->setQuery( + $db->getQuery(true) + ->select('COUNT(*)') + ->from($db->quoteName('#__mokowaas_download_keys')) + ->where($db->quoteName('element') . ' = ' . $db->quote($row->element)) + ); + + if ((int) $db->loadResult() > 0) + { + $db->setQuery( + $db->getQuery(true) + ->update($db->quoteName('#__mokowaas_download_keys')) + ->set($db->quoteName('dlid') . ' = ' . $db->quote($dlid)) + ->set($db->quoteName('location') . ' = ' . $db->quote($row->location)) + ->set($db->quoteName('modified') . ' = ' . $db->quote($now)) + ->where($db->quoteName('element') . ' = ' . $db->quote($row->element)) + )->execute(); + } + else + { + $db->setQuery( + $db->getQuery(true) + ->insert($db->quoteName('#__mokowaas_download_keys')) + ->columns([$db->quoteName('element'), $db->quoteName('location'), $db->quoteName('dlid'), $db->quoteName('created'), $db->quoteName('modified')]) + ->values(implode(',', [ + $db->quote($row->element), + $db->quote($row->location), + $db->quote($dlid), + $db->quote($now), + $db->quote($now), + ])) + )->execute(); + } + } + } + + /** + * Re-apply all stored download keys from our table to Joomla's update_sites. + */ + private function applyKeysFromTable($db): void + { + try + { + $db->setQuery( + $db->getQuery(true) + ->select('*') + ->from($db->quoteName('#__mokowaas_download_keys')) + ->where($db->quoteName('dlid') . ' != ' . $db->quote('')) + ); + } + catch (\Throwable $e) + { + // Table might not exist yet (before install SQL runs) + return; + } + + $keys = $db->loadObjectList() ?: []; + + foreach ($keys as $key) + { + // Find update sites for this extension that are missing the key + $db->setQuery( + $db->getQuery(true) + ->select('us.' . $db->quoteName('update_site_id')) + ->from($db->quoteName('#__update_sites', 'us')) + ->join('INNER', $db->quoteName('#__update_sites_extensions', 'use') . ' ON us.update_site_id = use.update_site_id') + ->join('INNER', $db->quoteName('#__extensions', 'e') . ' ON e.extension_id = use.extension_id') + ->where($db->quoteName('e.element') . ' = ' . $db->quote($key->element)) + ->where('(' . $db->quoteName('us.extra_query') . ' = ' . $db->quote('') + . ' OR ' . $db->quoteName('us.extra_query') . ' NOT LIKE ' . $db->quote('%dlid=%') . ')') + ); + $siteIds = $db->loadColumn() ?: []; + + foreach ($siteIds as $siteId) + { + $db->setQuery( + $db->getQuery(true) + ->update($db->quoteName('#__update_sites')) + ->set($db->quoteName('extra_query') . ' = ' . $db->quote('dlid=' . $key->dlid)) + ->where($db->quoteName('update_site_id') . ' = ' . (int) $siteId) + )->execute(); + } + } + } + } diff --git a/source/script.php b/source/script.php index b56a8491..b0b8d88a 100644 --- a/source/script.php +++ b/source/script.php @@ -109,8 +109,9 @@ class Pkg_MokowaasInstallerScript // Clean up stale/duplicate update sites $this->cleanupStaleUpdateSites(); - // Restore download keys saved in preflight (before Joomla wiped them) + // Restore download keys: first from preflight backup, then from DB table $this->restoreDownloadKeys($this->savedDownloadKeys); + $this->reapplyKeysFromDatabase(); // Fix orphaned update records (extension_id=0) $this->fixUpdateRecords(); @@ -689,26 +690,12 @@ class Pkg_MokowaasInstallerScript foreach ($rows as $row) { - // Key by location so we can match after IDs change $keys[$row->location] = $row->extra_query; $keys['id_' . $row->update_site_id] = $row->extra_query; } - // Also save to file backup for the preserveDownloadKeys() runtime guard - $backupFile = JPATH_ADMINISTRATOR . '/cache/mokowaas_dlkeys.json'; - $existing = []; - - if (file_exists($backupFile)) - { - $existing = json_decode(file_get_contents($backupFile), true) ?: []; - } - - foreach ($rows as $row) - { - $existing[$row->update_site_id] = $row->extra_query; - } - - file_put_contents($backupFile, json_encode($existing, JSON_PRETTY_PRINT)); + // Also save to our persistent database table + $this->syncKeysToDatabase($db, $rows); } catch (\Throwable $e) { @@ -718,6 +705,154 @@ class Pkg_MokowaasInstallerScript return $keys; } + /** + * Sync current download keys to the persistent #__mokowaas_download_keys table. + */ + private function syncKeysToDatabase($db, array $rows): void + { + try + { + // Check if table exists + $tables = $db->getTableList(); + $prefix = $db->getPrefix(); + + if (!\in_array($prefix . 'mokowaas_download_keys', $tables, true)) + { + return; + } + + $now = gmdate('Y-m-d H:i:s'); + + foreach ($rows as $row) + { + parse_str($row->extra_query, $parsed); + $dlid = $parsed['dlid'] ?? ''; + + if (empty($dlid)) + { + continue; + } + + // Find the element for this update site + $db->setQuery( + $db->getQuery(true) + ->select('e.' . $db->quoteName('element')) + ->from($db->quoteName('#__update_sites_extensions', 'use')) + ->join('INNER', $db->quoteName('#__extensions', 'e') . ' ON e.extension_id = use.extension_id') + ->where($db->quoteName('use.update_site_id') . ' = ' . (int) $row->update_site_id), + 0, 1 + ); + $element = (string) $db->loadResult(); + + if (empty($element)) + { + continue; + } + + // Upsert + $db->setQuery( + $db->getQuery(true) + ->select('COUNT(*)') + ->from($db->quoteName('#__mokowaas_download_keys')) + ->where($db->quoteName('element') . ' = ' . $db->quote($element)) + ); + + if ((int) $db->loadResult() > 0) + { + $db->setQuery( + $db->getQuery(true) + ->update($db->quoteName('#__mokowaas_download_keys')) + ->set($db->quoteName('dlid') . ' = ' . $db->quote($dlid)) + ->set($db->quoteName('location') . ' = ' . $db->quote($row->location)) + ->set($db->quoteName('modified') . ' = ' . $db->quote($now)) + ->where($db->quoteName('element') . ' = ' . $db->quote($element)) + )->execute(); + } + else + { + $db->setQuery( + $db->getQuery(true) + ->insert($db->quoteName('#__mokowaas_download_keys')) + ->columns([$db->quoteName('element'), $db->quoteName('location'), $db->quoteName('dlid'), $db->quoteName('created'), $db->quoteName('modified')]) + ->values(implode(',', [ + $db->quote($element), $db->quote($row->location), $db->quote($dlid), $db->quote($now), $db->quote($now), + ])) + )->execute(); + } + } + } + catch (\Throwable $e) + { + // Non-critical — table may not exist yet + } + } + + /** + * Re-apply all download keys from our persistent database table. + */ + private function reapplyKeysFromDatabase(): void + { + try + { + $db = Factory::getDbo(); + $tables = $db->getTableList(); + $prefix = $db->getPrefix(); + + if (!\in_array($prefix . 'mokowaas_download_keys', $tables, true)) + { + return; + } + + $db->setQuery( + $db->getQuery(true) + ->select('*') + ->from($db->quoteName('#__mokowaas_download_keys')) + ->where($db->quoteName('dlid') . ' != ' . $db->quote('')) + ); + $keys = $db->loadObjectList() ?: []; + + $restored = 0; + + foreach ($keys as $key) + { + $db->setQuery( + $db->getQuery(true) + ->select('us.' . $db->quoteName('update_site_id')) + ->from($db->quoteName('#__update_sites', 'us')) + ->join('INNER', $db->quoteName('#__update_sites_extensions', 'use') . ' ON us.update_site_id = use.update_site_id') + ->join('INNER', $db->quoteName('#__extensions', 'e') . ' ON e.extension_id = use.extension_id') + ->where($db->quoteName('e.element') . ' = ' . $db->quote($key->element)) + ->where('(' . $db->quoteName('us.extra_query') . ' = ' . $db->quote('') + . ' OR ' . $db->quoteName('us.extra_query') . ' NOT LIKE ' . $db->quote('%dlid=%') . ')') + ); + $siteIds = $db->loadColumn() ?: []; + + foreach ($siteIds as $siteId) + { + $db->setQuery( + $db->getQuery(true) + ->update($db->quoteName('#__update_sites')) + ->set($db->quoteName('extra_query') . ' = ' . $db->quote('dlid=' . $key->dlid)) + ->where($db->quoteName('update_site_id') . ' = ' . (int) $siteId) + )->execute(); + $restored++; + } + } + + if ($restored > 0) + { + Factory::getApplication()->enqueueMessage( + sprintf('Re-applied %d download key(s) from persistent storage.', $restored), + 'message' + ); + } + } + catch (\Throwable $e) + { + // Non-critical + } + } + /** * Restore download keys that were cleared by update site cleanup. * From 48905790f03b2fae349643ee7df486efb5637ed1 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sat, 6 Jun 2026 20:32:32 +0000 Subject: [PATCH 20/73] chore(version): pre-release bump to 02.34.25-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- .../plg_webservices_perfectpublisher/perfectpublisher.xml | 2 +- .../plg_webservices_perfectpublisher/services/provider.php | 2 +- .../src/Extension/PerfectPublisherApi.php | 2 +- source/pkg_mokowaas.xml | 2 +- 45 files changed, 55 insertions(+), 55 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index fce03eae..fb2348a6 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.24 + 02.34.25 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 32c9df1c..91b6c67c 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.24 +# VERSION: 02.34.25 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index e3abca8e..423a42d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.24 + VERSION: 02.34.25 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 81a4c3f0..5f1acb8d 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.24 + VERSION: 02.34.25 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 281a3119..b61da020 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.24 + VERSION: 02.34.25 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index f831b956..7bfff568 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.24 + VERSION: 02.34.25 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index bbf054ba..6bd8f5d2 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.24 + VERSION: 02.34.25 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index 2dc23672..94b25994 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.24 +VERSION: 02.34.25 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index 19342075..fed966f9 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.24 + VERSION: 02.34.25 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.24) +# MokoWaaS Build Guide (VERSION: 02.34.25) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index 59654bfc..da31da25 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.24 + VERSION: 02.34.25 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.24) +# MokoWaaS Configuration Guide (VERSION: 02.34.25) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index 82be559c..856f1226 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.24 + VERSION: 02.34.25 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.24) +# MokoWaaS Installation Guide (VERSION: 02.34.25) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index e3e57eee..0b34769a 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.24 + VERSION: 02.34.25 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.24) +# MokoWaaS Operations Guide (VERSION: 02.34.25) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index 27bbf575..bef232fa 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.24 + VERSION: 02.34.25 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.24) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.25) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index d163a3c2..535a8f39 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.24 + VERSION: 02.34.25 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.24) +# MokoWaaS Testing Guide (VERSION: 02.34.25) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index 8b9a1269..e99c4b63 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.24 + VERSION: 02.34.25 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.24) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.25) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index cd83fcd5..6640594f 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.24 + VERSION: 02.34.25 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.24) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.25) ## Introduction diff --git a/docs/index.md b/docs/index.md index 5931aa92..07c8921e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.24 + VERSION: 02.34.25 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.24) +# MokoWaaS Documentation Index (VERSION: 02.34.25) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index fa4c2541..36ac82e6 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.24 + VERSION: 02.34.25 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.24) +# MokoWaaS Plugin Overview (VERSION: 02.34.25) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index b0270bc4..5325eea5 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.24 +VERSION: 02.34.25 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index 20925cf4..1fd4b72d 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.24-dev + 02.34.25-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index b350deaf..9a7f62db 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.24-dev + 02.34.25-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index ce573fd4..82d17b97 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.24-dev + 02.34.25-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index e9824ce7..d4b5e33d 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.24-dev + 02.34.25-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index a5f4a5aa..430e2d10 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.24-dev + 02.34.25-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 19cfadc7..db724cb2 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.24 + * VERSION: 02.34.25 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index 0fa341fa..2d0a201c 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.24 + * VERSION: 02.34.25 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index 43d0aece..a5fabc9f 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.24-dev + 02.34.25-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index 8ff13267..c93fe602 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.24 + * VERSION: 02.34.25 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index d9f8122a..f0efebe4 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.24 + * VERSION: 02.34.25 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index 1784f0cc..ed748028 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.24-dev + 02.34.25-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index 158d54a2..5e935ddc 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.24-dev + 02.34.25-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index dc2dafa9..d6e4eee2 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.24-dev + 02.34.25-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index f5ef0670..5aca95a6 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.24-dev + 02.34.25-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index 217078a2..cc53841e 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.24-dev + 02.34.25-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index 4d17fed4..d16ec7db 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.24-dev + 02.34.25-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index aef68572..e9f29134 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.24-dev + 02.34.25-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index b494bfee..62ee057a 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.24 + * VERSION: 02.34.25 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 55cf5f36..7ec68dd1 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.24-dev + 02.34.25-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index 9f070581..bcb0bb0d 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.24 + * VERSION: 02.34.25 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index a8330ff8..683b9770 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.24 + * VERSION: 02.34.25 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index 7096fcd2..b4ce7ec8 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.24-dev + 02.34.25-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml index 2694fe0d..1555586c 100644 --- a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml +++ b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.24-dev + 02.34.25-dev Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds. Moko\Plugin\WebServices\PerfectPublisher diff --git a/source/packages/plg_webservices_perfectpublisher/services/provider.php b/source/packages/plg_webservices_perfectpublisher/services/provider.php index 79e3d65f..c2348372 100644 --- a/source/packages/plg_webservices_perfectpublisher/services/provider.php +++ b/source/packages/plg_webservices_perfectpublisher/services/provider.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/services/provider.php - * VERSION: 02.34.24 + * VERSION: 02.34.25 * BRIEF: DI service provider for Perfect Publisher Web Services plugin */ diff --git a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php index 7a2e2745..28fbf7b2 100644 --- a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php +++ b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php - * VERSION: 02.34.24 + * VERSION: 02.34.25 * BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet) */ diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index bcc97563..12491bab 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.24-dev + 02.34.25-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From 2ede22282d459fc49547be015d0efa6e0bf7d12a Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 15:40:16 -0500 Subject: [PATCH 21/73] fix: extension manager cards fill full width when 1-2 items --- source/packages/com_mokowaas/admin/tmpl/extensions/default.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/packages/com_mokowaas/admin/tmpl/extensions/default.php b/source/packages/com_mokowaas/admin/tmpl/extensions/default.php index 3332d30c..7d18c340 100644 --- a/source/packages/com_mokowaas/admin/tmpl/extensions/default.php +++ b/source/packages/com_mokowaas/admin/tmpl/extensions/default.php @@ -44,7 +44,7 @@ $statusBadge = [ status] ?? $statusBadge['not_installed']; ?> -
+
From 4d6a53f6e7ed49e8dfea08426b7f845e15212760 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sat, 6 Jun 2026 20:44:21 +0000 Subject: [PATCH 22/73] chore(version): pre-release bump to 02.34.26-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- .../plg_webservices_perfectpublisher/perfectpublisher.xml | 2 +- .../plg_webservices_perfectpublisher/services/provider.php | 2 +- .../src/Extension/PerfectPublisherApi.php | 2 +- source/pkg_mokowaas.xml | 2 +- 45 files changed, 55 insertions(+), 55 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index fb2348a6..806c3cf8 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.25 + 02.34.26 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 91b6c67c..3cf359fb 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.25 +# VERSION: 02.34.26 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 423a42d7..a93ad19d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.25 + VERSION: 02.34.26 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 5f1acb8d..9ca80c27 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.25 + VERSION: 02.34.26 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index b61da020..569cb55e 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.25 + VERSION: 02.34.26 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index 7bfff568..57a329ac 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.25 + VERSION: 02.34.26 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index 6bd8f5d2..f0cad4bf 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.25 + VERSION: 02.34.26 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index 94b25994..f06159da 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.25 +VERSION: 02.34.26 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index fed966f9..00deaba5 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.25 + VERSION: 02.34.26 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.25) +# MokoWaaS Build Guide (VERSION: 02.34.26) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index da31da25..6c9cedec 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.25 + VERSION: 02.34.26 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.25) +# MokoWaaS Configuration Guide (VERSION: 02.34.26) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index 856f1226..6a038e18 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.25 + VERSION: 02.34.26 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.25) +# MokoWaaS Installation Guide (VERSION: 02.34.26) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index 0b34769a..0e8e92b8 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.25 + VERSION: 02.34.26 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.25) +# MokoWaaS Operations Guide (VERSION: 02.34.26) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index bef232fa..72cc54aa 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.25 + VERSION: 02.34.26 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.25) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.26) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index 535a8f39..084c5713 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.25 + VERSION: 02.34.26 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.25) +# MokoWaaS Testing Guide (VERSION: 02.34.26) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index e99c4b63..6a0a7fdd 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.25 + VERSION: 02.34.26 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.25) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.26) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index 6640594f..e6e43788 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.25 + VERSION: 02.34.26 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.25) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.26) ## Introduction diff --git a/docs/index.md b/docs/index.md index 07c8921e..7f15da9d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.25 + VERSION: 02.34.26 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.25) +# MokoWaaS Documentation Index (VERSION: 02.34.26) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index 36ac82e6..8b755823 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.25 + VERSION: 02.34.26 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.25) +# MokoWaaS Plugin Overview (VERSION: 02.34.26) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index 5325eea5..4d18973c 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.25 +VERSION: 02.34.26 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index 1fd4b72d..08379c3c 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.25-dev + 02.34.26-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index 9a7f62db..993562b7 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.25-dev + 02.34.26-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index 82d17b97..2d37f0a7 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.25-dev + 02.34.26-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index d4b5e33d..f4ce1bcf 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.25-dev + 02.34.26-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index 430e2d10..5e10495a 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.25-dev + 02.34.26-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index db724cb2..8fb6dfe4 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.25 + * VERSION: 02.34.26 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index 2d0a201c..75759c4e 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.25 + * VERSION: 02.34.26 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index a5fabc9f..0c6b0def 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.25-dev + 02.34.26-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index c93fe602..efddff46 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.25 + * VERSION: 02.34.26 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index f0efebe4..61558a3f 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.25 + * VERSION: 02.34.26 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index ed748028..d9b71a1a 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.25-dev + 02.34.26-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index 5e935ddc..a0772b16 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.25-dev + 02.34.26-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index d6e4eee2..4015fd1e 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.25-dev + 02.34.26-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index 5aca95a6..5a4994e3 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.25-dev + 02.34.26-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index cc53841e..27d988cb 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.25-dev + 02.34.26-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index d16ec7db..786ec997 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.25-dev + 02.34.26-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index e9f29134..a1fe4547 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.25-dev + 02.34.26-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index 62ee057a..08c9f653 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.25 + * VERSION: 02.34.26 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 7ec68dd1..22a5373e 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.25-dev + 02.34.26-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index bcb0bb0d..fa51ab65 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.25 + * VERSION: 02.34.26 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index 683b9770..f6ff3fab 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.25 + * VERSION: 02.34.26 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index b4ce7ec8..0de82652 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.25-dev + 02.34.26-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml index 1555586c..05278bdf 100644 --- a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml +++ b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.25-dev + 02.34.26-dev Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds. Moko\Plugin\WebServices\PerfectPublisher diff --git a/source/packages/plg_webservices_perfectpublisher/services/provider.php b/source/packages/plg_webservices_perfectpublisher/services/provider.php index c2348372..b5628c0f 100644 --- a/source/packages/plg_webservices_perfectpublisher/services/provider.php +++ b/source/packages/plg_webservices_perfectpublisher/services/provider.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/services/provider.php - * VERSION: 02.34.25 + * VERSION: 02.34.26 * BRIEF: DI service provider for Perfect Publisher Web Services plugin */ diff --git a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php index 28fbf7b2..b4428457 100644 --- a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php +++ b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php - * VERSION: 02.34.25 + * VERSION: 02.34.26 * BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet) */ diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index 12491bab..77611c18 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.25-dev + 02.34.26-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From 01c0bb8a32b76ce8c7d96f9a570f4d3c54e3d9c1 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 15:47:38 -0500 Subject: [PATCH 23/73] fix: restore download keys by element name, not just URL/ID The URL migration in postflight changes update site URLs BEFORE restoreDownloadKeys runs, so URL-based matching fails. Element names are stable across updates. Now backs up keys as elem_ELEMENT and restores by matching the extension element name first, falling back to URL and ID. Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) --- source/script.php | 49 +++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 41 insertions(+), 8 deletions(-) diff --git a/source/script.php b/source/script.php index b0b8d88a..6d581090 100644 --- a/source/script.php +++ b/source/script.php @@ -680,16 +680,27 @@ class Pkg_MokowaasInstallerScript try { $db = Factory::getDbo(); + + // Get ALL download keys with their element names (stable identifier) $db->setQuery( $db->getQuery(true) - ->select([$db->quoteName('update_site_id'), $db->quoteName('extra_query'), $db->quoteName('location')]) - ->from($db->quoteName('#__update_sites')) - ->where($db->quoteName('extra_query') . ' != ' . $db->quote('')) + ->select([ + 'us.' . $db->quoteName('update_site_id'), + 'us.' . $db->quoteName('extra_query'), + 'us.' . $db->quoteName('location'), + 'e.' . $db->quoteName('element'), + ]) + ->from($db->quoteName('#__update_sites', 'us')) + ->join('INNER', $db->quoteName('#__update_sites_extensions', 'use') . ' ON us.update_site_id = use.update_site_id') + ->join('INNER', $db->quoteName('#__extensions', 'e') . ' ON e.extension_id = use.extension_id') + ->where($db->quoteName('us.extra_query') . ' != ' . $db->quote('')) ); $rows = $db->loadObjectList() ?: []; foreach ($rows as $row) { + // Key by element name (stable), URL, and ID (fallbacks) + $keys['elem_' . $row->element] = $row->extra_query; $keys[$row->location] = $row->extra_query; $keys['id_' . $row->update_site_id] = $row->extra_query; } @@ -868,11 +879,21 @@ class Pkg_MokowaasInstallerScript try { $db = Factory::getDbo(); + + // Get update sites with empty extra_query AND their element names $db->setQuery( $db->getQuery(true) - ->select([$db->quoteName('update_site_id'), $db->quoteName('extra_query'), $db->quoteName('location')]) - ->from($db->quoteName('#__update_sites')) - ->where($db->quoteName('extra_query') . ' = ' . $db->quote('')) + ->select([ + 'us.' . $db->quoteName('update_site_id'), + 'us.' . $db->quoteName('extra_query'), + 'us.' . $db->quoteName('location'), + 'e.' . $db->quoteName('element'), + ]) + ->from($db->quoteName('#__update_sites', 'us')) + ->join('LEFT', $db->quoteName('#__update_sites_extensions', 'use') . ' ON us.update_site_id = use.update_site_id') + ->join('LEFT', $db->quoteName('#__extensions', 'e') . ' ON e.extension_id = use.extension_id') + ->where('(' . $db->quoteName('us.extra_query') . ' = ' . $db->quote('') + . ' OR ' . $db->quoteName('us.extra_query') . ' NOT LIKE ' . $db->quote('%dlid=%') . ')') ); $sites = $db->loadObjectList() ?: []; @@ -880,8 +901,20 @@ class Pkg_MokowaasInstallerScript foreach ($sites as $site) { - // Try to match by location URL first, then by old ID - $key = $savedKeys[$site->location] ?? $savedKeys['id_' . $site->update_site_id] ?? ''; + $element = (string) ($site->element ?? ''); + + // Match by element name first (stable), then URL, then old ID + $key = ''; + + if ($element !== '') + { + $key = $savedKeys['elem_' . $element] ?? ''; + } + + if (empty($key)) + { + $key = $savedKeys[$site->location] ?? $savedKeys['id_' . $site->update_site_id] ?? ''; + } if (!empty($key)) { From 104251f800b4c490297110edfc4888ffc2b06f9d Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 15:53:42 -0500 Subject: [PATCH 24/73] fix: create download_keys table on update + element-based key matching Root cause: the #__mokowaas_download_keys table was only in install.mysql.sql (fresh installs). Existing sites never got it, so syncKeysToTable/applyKeysFromTable silently failed. - Add sql/updates/mysql/02.35.00.sql migration for existing installs - Register in component manifest - Add ensureDownloadKeysTable() as belt-and-suspenders in postflight - backupDownloadKeys() now saves by element name (stable identifier) - restoreDownloadKeys() matches by element first, URL second, ID third Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) --- .../admin/sql/updates/mysql/02.35.00.sql | 11 +++++++ source/packages/com_mokowaas/mokowaas.xml | 6 ++++ source/script.php | 30 +++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 source/packages/com_mokowaas/admin/sql/updates/mysql/02.35.00.sql diff --git a/source/packages/com_mokowaas/admin/sql/updates/mysql/02.35.00.sql b/source/packages/com_mokowaas/admin/sql/updates/mysql/02.35.00.sql new file mode 100644 index 00000000..44aad811 --- /dev/null +++ b/source/packages/com_mokowaas/admin/sql/updates/mysql/02.35.00.sql @@ -0,0 +1,11 @@ +CREATE TABLE IF NOT EXISTS `#__mokowaas_download_keys` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `element` VARCHAR(100) NOT NULL DEFAULT '' COMMENT 'Extension element name', + `location` VARCHAR(512) NOT NULL DEFAULT '' COMMENT 'Update server URL', + `dlid` VARCHAR(255) NOT NULL DEFAULT '' COMMENT 'Download key value', + `created` DATETIME NOT NULL, + `modified` DATETIME NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `idx_dlkey_element` (`element`), + KEY `idx_dlkey_location` (`location`(191)) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index 08379c3c..160a64c6 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -25,6 +25,12 @@ Moko\Component\MokoWaaS + + + sql/updates/mysql + + + MokoWaaS diff --git a/source/script.php b/source/script.php index 6d581090..f9739a46 100644 --- a/source/script.php +++ b/source/script.php @@ -109,6 +109,9 @@ class Pkg_MokowaasInstallerScript // Clean up stale/duplicate update sites $this->cleanupStaleUpdateSites(); + // Ensure download keys table exists (belt-and-suspenders with schema update) + $this->ensureDownloadKeysTable(); + // Restore download keys: first from preflight backup, then from DB table $this->restoreDownloadKeys($this->savedDownloadKeys); $this->reapplyKeysFromDatabase(); @@ -673,6 +676,33 @@ class Pkg_MokowaasInstallerScript * * @return array Map of update_site_id => extra_query */ + /** + * Ensure the download keys table exists. + */ + private function ensureDownloadKeysTable(): void + { + try + { + $db = Factory::getDbo(); + $db->setQuery("CREATE TABLE IF NOT EXISTS `#__mokowaas_download_keys` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `element` VARCHAR(100) NOT NULL DEFAULT '', + `location` VARCHAR(512) NOT NULL DEFAULT '', + `dlid` VARCHAR(255) NOT NULL DEFAULT '', + `created` DATETIME NOT NULL, + `modified` DATETIME NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `idx_dlkey_element` (`element`), + KEY `idx_dlkey_location` (`location`(191)) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"); + $db->execute(); + } + catch (\Throwable $e) + { + // Non-critical + } + } + private function backupDownloadKeys(): array { $keys = []; From d9b77d50171efcfabd69fd3fa9a365ff7c5c4fa2 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sat, 6 Jun 2026 20:55:02 +0000 Subject: [PATCH 25/73] chore(version): pre-release bump to 02.34.27-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- .../plg_webservices_perfectpublisher/perfectpublisher.xml | 2 +- .../plg_webservices_perfectpublisher/services/provider.php | 2 +- .../src/Extension/PerfectPublisherApi.php | 2 +- source/pkg_mokowaas.xml | 2 +- 45 files changed, 55 insertions(+), 55 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 806c3cf8..33c2f271 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.26 + 02.34.27 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 3cf359fb..4b2d157a 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.26 +# VERSION: 02.34.27 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index a93ad19d..07a027d5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.26 + VERSION: 02.34.27 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 9ca80c27..f1dbc343 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.26 + VERSION: 02.34.27 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 569cb55e..cc3e5586 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.26 + VERSION: 02.34.27 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index 57a329ac..1ad96cab 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.26 + VERSION: 02.34.27 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index f0cad4bf..d5688d4f 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.26 + VERSION: 02.34.27 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index f06159da..0a50c1ba 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.26 +VERSION: 02.34.27 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index 00deaba5..edf2f7bb 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.26 + VERSION: 02.34.27 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.26) +# MokoWaaS Build Guide (VERSION: 02.34.27) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index 6c9cedec..cd43c797 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.26 + VERSION: 02.34.27 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.26) +# MokoWaaS Configuration Guide (VERSION: 02.34.27) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index 6a038e18..4f275536 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.26 + VERSION: 02.34.27 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.26) +# MokoWaaS Installation Guide (VERSION: 02.34.27) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index 0e8e92b8..29375acd 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.26 + VERSION: 02.34.27 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.26) +# MokoWaaS Operations Guide (VERSION: 02.34.27) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index 72cc54aa..30f811af 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.26 + VERSION: 02.34.27 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.26) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.27) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index 084c5713..90573e43 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.26 + VERSION: 02.34.27 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.26) +# MokoWaaS Testing Guide (VERSION: 02.34.27) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index 6a0a7fdd..ac0a9040 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.26 + VERSION: 02.34.27 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.26) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.27) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index e6e43788..42f0a0a6 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.26 + VERSION: 02.34.27 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.26) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.27) ## Introduction diff --git a/docs/index.md b/docs/index.md index 7f15da9d..a926eae3 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.26 + VERSION: 02.34.27 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.26) +# MokoWaaS Documentation Index (VERSION: 02.34.27) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index 8b755823..e5d5b8c2 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.26 + VERSION: 02.34.27 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.26) +# MokoWaaS Plugin Overview (VERSION: 02.34.27) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index 4d18973c..fecbd932 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.26 +VERSION: 02.34.27 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index 160a64c6..54fbf140 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.26-dev + 02.34.27-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index 993562b7..4c624025 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.26-dev + 02.34.27-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index 2d37f0a7..c78424c4 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.26-dev + 02.34.27-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index f4ce1bcf..3f8e8aab 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.26-dev + 02.34.27-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index 5e10495a..16020246 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.26-dev + 02.34.27-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 8fb6dfe4..90a577de 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.26 + * VERSION: 02.34.27 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index 75759c4e..e29c350e 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.26 + * VERSION: 02.34.27 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index 0c6b0def..17bbcc90 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.26-dev + 02.34.27-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index efddff46..789c9884 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.26 + * VERSION: 02.34.27 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index 61558a3f..3980164d 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.26 + * VERSION: 02.34.27 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index d9b71a1a..0f185920 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.26-dev + 02.34.27-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index a0772b16..207b0233 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.26-dev + 02.34.27-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index 4015fd1e..d155e161 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.26-dev + 02.34.27-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index 5a4994e3..ae992cb8 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.26-dev + 02.34.27-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index 27d988cb..fd0439fd 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.26-dev + 02.34.27-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index 786ec997..29223453 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.26-dev + 02.34.27-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index a1fe4547..a9ec27f6 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.26-dev + 02.34.27-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index 08c9f653..91b0e667 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.26 + * VERSION: 02.34.27 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 22a5373e..986f983d 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.26-dev + 02.34.27-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index fa51ab65..299e74eb 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.26 + * VERSION: 02.34.27 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index f6ff3fab..4795479f 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.26 + * VERSION: 02.34.27 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index 0de82652..486aa417 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.26-dev + 02.34.27-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml index 05278bdf..591c2aab 100644 --- a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml +++ b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.26-dev + 02.34.27-dev Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds. Moko\Plugin\WebServices\PerfectPublisher diff --git a/source/packages/plg_webservices_perfectpublisher/services/provider.php b/source/packages/plg_webservices_perfectpublisher/services/provider.php index b5628c0f..8f0d3781 100644 --- a/source/packages/plg_webservices_perfectpublisher/services/provider.php +++ b/source/packages/plg_webservices_perfectpublisher/services/provider.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/services/provider.php - * VERSION: 02.34.26 + * VERSION: 02.34.27 * BRIEF: DI service provider for Perfect Publisher Web Services plugin */ diff --git a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php index b4428457..d3398c63 100644 --- a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php +++ b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php - * VERSION: 02.34.26 + * VERSION: 02.34.27 * BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet) */ diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index 77611c18..5e58b3dc 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.26-dev + 02.34.27-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From 670eda8d916403684e2c4cc0ca77d0d5310e48ae Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 16:07:23 -0500 Subject: [PATCH 26/73] =?UTF-8?q?fix:=20download=20key=20lost=20on=20updat?= =?UTF-8?q?e=20=E2=80=94=20stale=20URL=20in=20cleanupStaleUpdateSites?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The cleanup method used the old /raw/branch/main/updates.xml URL as its keep target, but migrateUpdateServerUrls had already rewritten all URLs to /updates.xml. This caused the method to find no match and delete all MokoWaaS update sites — including the one with the download key. Fixed by updating the hardcoded URL to match the current manifest format: /MokoConsulting/MokoWaaS/updates.xml Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) --- CHANGELOG.md | 3 +++ source/script.php | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 07a027d5..a332fcde 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,9 @@ ## [Unreleased] +### Fixed +- Download key lost on update: cleanupStaleUpdateSites used old /raw/branch/main/ URL format, deleting the manifest-registered update site that held the key + ## [02.35.00] - 2026-06-06 ### Added diff --git a/source/script.php b/source/script.php index f9739a46..e13c52d6 100644 --- a/source/script.php +++ b/source/script.php @@ -601,7 +601,7 @@ class Pkg_MokowaasInstallerScript try { $db = Factory::getDbo(); - $dynamicUrl = 'https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/raw/branch/main/updates.xml'; + $dynamicUrl = 'https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/updates.xml'; // Find all MokoWaaS update sites $query = $db->getQuery(true) From 473d512e1c211ffc3660b210d3b47886f196e19a Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 16:24:20 -0500 Subject: [PATCH 27/73] refactor: remove database-backed download key table The #__mokowaas_download_keys table approach was over-engineered. Download key preservation is handled by the install script's preflight/postflight with element-name matching. Removed: - #__mokowaas_download_keys table from install SQL - syncKeysToTable/applyKeysFromTable from core plugin - saveDownloadKey/applyDownloadKey/reapplyAllDownloadKeys from model - ensureDownloadKeysTable/syncKeysToDatabase/reapplyKeysFromDatabase from install script Added: - Migration SQL (02.35.00) to DROP the table from existing installs - Uninstall SQL for all component tables - Install/uninstall SQL blocks in component manifest Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) --- .../com_mokowaas/admin/sql/install.mysql.sql | 15 -- .../admin/sql/uninstall.mysql.sql | 13 ++ .../admin/sql/updates/mysql/02.35.00.sql | 13 +- .../admin/src/Model/ExtensionsModel.php | 133 ------------- source/packages/com_mokowaas/mokowaas.xml | 6 + .../Extension/MokoWaaS.php | 136 +------------ source/script.php | 183 +----------------- 7 files changed, 25 insertions(+), 474 deletions(-) create mode 100644 source/packages/com_mokowaas/admin/sql/uninstall.mysql.sql diff --git a/source/packages/com_mokowaas/admin/sql/install.mysql.sql b/source/packages/com_mokowaas/admin/sql/install.mysql.sql index af34efcc..f6841edb 100644 --- a/source/packages/com_mokowaas/admin/sql/install.mysql.sql +++ b/source/packages/com_mokowaas/admin/sql/install.mysql.sql @@ -134,18 +134,3 @@ INSERT IGNORE INTO `#__mokowaas_retention_policies` (`id`, `content_type`, `rete (4, 'inactive_users', 730, 'anonymize', 0, 'Anonymize users inactive for 2 years (disabled by default)'), (5, 'closed_tickets', 365, 'anonymize', 0, 'Anonymize closed tickets older than 1 year (disabled by default)'); --- --- Download Key Storage — persistent backup of extension download keys --- that survives Joomla update site recreation --- -CREATE TABLE IF NOT EXISTS `#__mokowaas_download_keys` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, - `element` VARCHAR(100) NOT NULL DEFAULT '' COMMENT 'Extension element name', - `location` VARCHAR(512) NOT NULL DEFAULT '' COMMENT 'Update server URL', - `dlid` VARCHAR(255) NOT NULL DEFAULT '' COMMENT 'Download key value', - `created` DATETIME NOT NULL, - `modified` DATETIME NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `idx_dlkey_element` (`element`), - KEY `idx_dlkey_location` (`location`(191)) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/source/packages/com_mokowaas/admin/sql/uninstall.mysql.sql b/source/packages/com_mokowaas/admin/sql/uninstall.mysql.sql new file mode 100644 index 00000000..b58b727d --- /dev/null +++ b/source/packages/com_mokowaas/admin/sql/uninstall.mysql.sql @@ -0,0 +1,13 @@ +-- +-- MokoWaaS component uninstall — drop all tables +-- +DROP TABLE IF EXISTS `#__mokowaas_download_keys`; +DROP TABLE IF EXISTS `#__mokowaas_retention_policies`; +DROP TABLE IF EXISTS `#__mokowaas_data_requests`; +DROP TABLE IF EXISTS `#__mokowaas_consent_log`; +DROP TABLE IF EXISTS `#__mokowaas_waf_log`; +DROP TABLE IF EXISTS `#__mokowaas_ticket_automation`; +DROP TABLE IF EXISTS `#__mokowaas_ticket_canned`; +DROP TABLE IF EXISTS `#__mokowaas_ticket_replies`; +DROP TABLE IF EXISTS `#__mokowaas_tickets`; +DROP TABLE IF EXISTS `#__mokowaas_ticket_categories`; diff --git a/source/packages/com_mokowaas/admin/sql/updates/mysql/02.35.00.sql b/source/packages/com_mokowaas/admin/sql/updates/mysql/02.35.00.sql index 44aad811..bb1decec 100644 --- a/source/packages/com_mokowaas/admin/sql/updates/mysql/02.35.00.sql +++ b/source/packages/com_mokowaas/admin/sql/updates/mysql/02.35.00.sql @@ -1,11 +1,2 @@ -CREATE TABLE IF NOT EXISTS `#__mokowaas_download_keys` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, - `element` VARCHAR(100) NOT NULL DEFAULT '' COMMENT 'Extension element name', - `location` VARCHAR(512) NOT NULL DEFAULT '' COMMENT 'Update server URL', - `dlid` VARCHAR(255) NOT NULL DEFAULT '' COMMENT 'Download key value', - `created` DATETIME NOT NULL, - `modified` DATETIME NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `idx_dlkey_element` (`element`), - KEY `idx_dlkey_location` (`location`(191)) -) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +-- Remove download_keys table (feature reverted — preflight handles key preservation) +DROP TABLE IF EXISTS `#__mokowaas_download_keys`; diff --git a/source/packages/com_mokowaas/admin/src/Model/ExtensionsModel.php b/source/packages/com_mokowaas/admin/src/Model/ExtensionsModel.php index 0095f702..77024bf6 100644 --- a/source/packages/com_mokowaas/admin/src/Model/ExtensionsModel.php +++ b/source/packages/com_mokowaas/admin/src/Model/ExtensionsModel.php @@ -369,139 +369,6 @@ class ExtensionsModel extends BaseDatabaseModel } } - /** - * Save a download key for a Moko extension. - * - * @param string $element Extension element name. - * @param string $dlid Download key value. - * @param string $location Update server URL (optional). - */ - public function saveDownloadKey(string $element, string $dlid, string $location = ''): void - { - $db = $this->getDatabase(); - $now = gmdate('Y-m-d H:i:s'); - - // Upsert — update if exists, insert if not - $db->setQuery( - $db->getQuery(true) - ->select('COUNT(*)') - ->from($db->quoteName('#__mokowaas_download_keys')) - ->where($db->quoteName('element') . ' = ' . $db->quote($element)) - ); - - if ((int) $db->loadResult() > 0) - { - $db->setQuery( - $db->getQuery(true) - ->update($db->quoteName('#__mokowaas_download_keys')) - ->set($db->quoteName('dlid') . ' = ' . $db->quote($dlid)) - ->set($db->quoteName('location') . ' = ' . $db->quote($location)) - ->set($db->quoteName('modified') . ' = ' . $db->quote($now)) - ->where($db->quoteName('element') . ' = ' . $db->quote($element)) - )->execute(); - } - else - { - $db->setQuery( - $db->getQuery(true) - ->insert($db->quoteName('#__mokowaas_download_keys')) - ->columns([$db->quoteName('element'), $db->quoteName('location'), $db->quoteName('dlid'), $db->quoteName('created'), $db->quoteName('modified')]) - ->values(implode(',', [ - $db->quote($element), - $db->quote($location), - $db->quote($dlid), - $db->quote($now), - $db->quote($now), - ])) - )->execute(); - } - - // Immediately apply to Joomla's update site - $this->applyDownloadKey($element, $dlid); - } - - /** - * Apply a stored download key to Joomla's update site for an extension. - */ - public function applyDownloadKey(string $element, string $dlid): void - { - $db = $this->getDatabase(); - - $db->setQuery( - $db->getQuery(true) - ->select('us.' . $db->quoteName('update_site_id')) - ->from($db->quoteName('#__update_sites', 'us')) - ->join('INNER', $db->quoteName('#__update_sites_extensions', 'use') . ' ON us.update_site_id = use.update_site_id') - ->join('INNER', $db->quoteName('#__extensions', 'e') . ' ON e.extension_id = use.extension_id') - ->where($db->quoteName('e.element') . ' = ' . $db->quote($element)) - ); - $siteIds = $db->loadColumn() ?: []; - - foreach ($siteIds as $siteId) - { - $db->setQuery( - $db->getQuery(true) - ->update($db->quoteName('#__update_sites')) - ->set($db->quoteName('extra_query') . ' = ' . $db->quote('dlid=' . $dlid)) - ->where($db->quoteName('update_site_id') . ' = ' . (int) $siteId) - )->execute(); - } - } - - /** - * Re-apply all stored Moko download keys to Joomla's update sites. - * Called after updates that may have wiped extra_query. - * - * @return int Number of keys re-applied. - */ - public static function reapplyAllDownloadKeys(): int - { - try - { - $db = Factory::getDbo(); - - $db->setQuery( - $db->getQuery(true) - ->select('*') - ->from($db->quoteName('#__mokowaas_download_keys')) - ->where($db->quoteName('dlid') . ' != ' . $db->quote('')) - ); - $keys = $db->loadObjectList() ?: []; - - $applied = 0; - - foreach ($keys as $key) - { - $db->setQuery( - $db->getQuery(true) - ->select('us.' . $db->quoteName('update_site_id')) - ->from($db->quoteName('#__update_sites', 'us')) - ->join('INNER', $db->quoteName('#__update_sites_extensions', 'use') . ' ON us.update_site_id = use.update_site_id') - ->join('INNER', $db->quoteName('#__extensions', 'e') . ' ON e.extension_id = use.extension_id') - ->where($db->quoteName('e.element') . ' = ' . $db->quote($key->element)) - ); - $siteIds = $db->loadColumn() ?: []; - - foreach ($siteIds as $siteId) - { - $db->setQuery( - $db->getQuery(true) - ->update($db->quoteName('#__update_sites')) - ->set($db->quoteName('extra_query') . ' = ' . $db->quote('dlid=' . $key->dlid)) - ->where($db->quoteName('update_site_id') . ' = ' . (int) $siteId) - )->execute(); - $applied++; - } - } - - return $applied; - } - catch (\Throwable $e) - { - return 0; - } - } - /** * Get the extension_id for an element (for uninstall links). * diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index 54fbf140..61588358 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -25,6 +25,12 @@ Moko\Component\MokoWaaS + + sql/install.mysql.sql + + + sql/uninstall.mysql.sql + sql/updates/mysql diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 90a577de..d782f3df 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -2239,138 +2239,8 @@ class MokoWaaS extends CMSPlugin implements BootableExtensionInterface */ protected function preserveDownloadKeys(): void { - try - { - $db = Factory::getDbo(); - - // Sync: copy any new download keys FROM Joomla's update_sites TO our table - $this->syncKeysToTable($db); - - // Apply: re-apply all stored keys FROM our table TO Joomla's update_sites - $this->applyKeysFromTable($db); - } - catch (\Throwable $e) - { - // Non-critical - } + // Download key preservation is handled by the install script's + // preflight/postflight (backupDownloadKeys/restoreDownloadKeys). + // No runtime action needed — the preflight fix catches the wipe. } - - /** - * Copy non-empty download keys from Joomla's update_sites to our persistent table. - */ - private function syncKeysToTable($db): void - { - // Find all update sites with download keys - $db->setQuery( - $db->getQuery(true) - ->select([ - 'us.' . $db->quoteName('extra_query'), - 'us.' . $db->quoteName('location'), - 'e.' . $db->quoteName('element'), - ]) - ->from($db->quoteName('#__update_sites', 'us')) - ->join('INNER', $db->quoteName('#__update_sites_extensions', 'use') . ' ON us.update_site_id = use.update_site_id') - ->join('INNER', $db->quoteName('#__extensions', 'e') . ' ON e.extension_id = use.extension_id') - ->where($db->quoteName('us.extra_query') . ' LIKE ' . $db->quote('%dlid=%')) - ); - $rows = $db->loadObjectList() ?: []; - - $now = gmdate('Y-m-d H:i:s'); - - foreach ($rows as $row) - { - parse_str($row->extra_query, $parsed); - $dlid = $parsed['dlid'] ?? ''; - - if (empty($dlid)) - { - continue; - } - - // Upsert into our table - $db->setQuery( - $db->getQuery(true) - ->select('COUNT(*)') - ->from($db->quoteName('#__mokowaas_download_keys')) - ->where($db->quoteName('element') . ' = ' . $db->quote($row->element)) - ); - - if ((int) $db->loadResult() > 0) - { - $db->setQuery( - $db->getQuery(true) - ->update($db->quoteName('#__mokowaas_download_keys')) - ->set($db->quoteName('dlid') . ' = ' . $db->quote($dlid)) - ->set($db->quoteName('location') . ' = ' . $db->quote($row->location)) - ->set($db->quoteName('modified') . ' = ' . $db->quote($now)) - ->where($db->quoteName('element') . ' = ' . $db->quote($row->element)) - )->execute(); - } - else - { - $db->setQuery( - $db->getQuery(true) - ->insert($db->quoteName('#__mokowaas_download_keys')) - ->columns([$db->quoteName('element'), $db->quoteName('location'), $db->quoteName('dlid'), $db->quoteName('created'), $db->quoteName('modified')]) - ->values(implode(',', [ - $db->quote($row->element), - $db->quote($row->location), - $db->quote($dlid), - $db->quote($now), - $db->quote($now), - ])) - )->execute(); - } - } - } - - /** - * Re-apply all stored download keys from our table to Joomla's update_sites. - */ - private function applyKeysFromTable($db): void - { - try - { - $db->setQuery( - $db->getQuery(true) - ->select('*') - ->from($db->quoteName('#__mokowaas_download_keys')) - ->where($db->quoteName('dlid') . ' != ' . $db->quote('')) - ); - } - catch (\Throwable $e) - { - // Table might not exist yet (before install SQL runs) - return; - } - - $keys = $db->loadObjectList() ?: []; - - foreach ($keys as $key) - { - // Find update sites for this extension that are missing the key - $db->setQuery( - $db->getQuery(true) - ->select('us.' . $db->quoteName('update_site_id')) - ->from($db->quoteName('#__update_sites', 'us')) - ->join('INNER', $db->quoteName('#__update_sites_extensions', 'use') . ' ON us.update_site_id = use.update_site_id') - ->join('INNER', $db->quoteName('#__extensions', 'e') . ' ON e.extension_id = use.extension_id') - ->where($db->quoteName('e.element') . ' = ' . $db->quote($key->element)) - ->where('(' . $db->quoteName('us.extra_query') . ' = ' . $db->quote('') - . ' OR ' . $db->quoteName('us.extra_query') . ' NOT LIKE ' . $db->quote('%dlid=%') . ')') - ); - $siteIds = $db->loadColumn() ?: []; - - foreach ($siteIds as $siteId) - { - $db->setQuery( - $db->getQuery(true) - ->update($db->quoteName('#__update_sites')) - ->set($db->quoteName('extra_query') . ' = ' . $db->quote('dlid=' . $key->dlid)) - ->where($db->quoteName('update_site_id') . ' = ' . (int) $siteId) - )->execute(); - } - } - } - } diff --git a/source/script.php b/source/script.php index e13c52d6..1cf217fe 100644 --- a/source/script.php +++ b/source/script.php @@ -109,12 +109,8 @@ class Pkg_MokowaasInstallerScript // Clean up stale/duplicate update sites $this->cleanupStaleUpdateSites(); - // Ensure download keys table exists (belt-and-suspenders with schema update) - $this->ensureDownloadKeysTable(); - - // Restore download keys: first from preflight backup, then from DB table + // Restore download keys saved in preflight (before Joomla wiped them) $this->restoreDownloadKeys($this->savedDownloadKeys); - $this->reapplyKeysFromDatabase(); // Fix orphaned update records (extension_id=0) $this->fixUpdateRecords(); @@ -676,33 +672,6 @@ class Pkg_MokowaasInstallerScript * * @return array Map of update_site_id => extra_query */ - /** - * Ensure the download keys table exists. - */ - private function ensureDownloadKeysTable(): void - { - try - { - $db = Factory::getDbo(); - $db->setQuery("CREATE TABLE IF NOT EXISTS `#__mokowaas_download_keys` ( - `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, - `element` VARCHAR(100) NOT NULL DEFAULT '', - `location` VARCHAR(512) NOT NULL DEFAULT '', - `dlid` VARCHAR(255) NOT NULL DEFAULT '', - `created` DATETIME NOT NULL, - `modified` DATETIME NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `idx_dlkey_element` (`element`), - KEY `idx_dlkey_location` (`location`(191)) - ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4"); - $db->execute(); - } - catch (\Throwable $e) - { - // Non-critical - } - } - private function backupDownloadKeys(): array { $keys = []; @@ -735,8 +704,6 @@ class Pkg_MokowaasInstallerScript $keys['id_' . $row->update_site_id] = $row->extra_query; } - // Also save to our persistent database table - $this->syncKeysToDatabase($db, $rows); } catch (\Throwable $e) { @@ -746,154 +713,6 @@ class Pkg_MokowaasInstallerScript return $keys; } - /** - * Sync current download keys to the persistent #__mokowaas_download_keys table. - */ - private function syncKeysToDatabase($db, array $rows): void - { - try - { - // Check if table exists - $tables = $db->getTableList(); - $prefix = $db->getPrefix(); - - if (!\in_array($prefix . 'mokowaas_download_keys', $tables, true)) - { - return; - } - - $now = gmdate('Y-m-d H:i:s'); - - foreach ($rows as $row) - { - parse_str($row->extra_query, $parsed); - $dlid = $parsed['dlid'] ?? ''; - - if (empty($dlid)) - { - continue; - } - - // Find the element for this update site - $db->setQuery( - $db->getQuery(true) - ->select('e.' . $db->quoteName('element')) - ->from($db->quoteName('#__update_sites_extensions', 'use')) - ->join('INNER', $db->quoteName('#__extensions', 'e') . ' ON e.extension_id = use.extension_id') - ->where($db->quoteName('use.update_site_id') . ' = ' . (int) $row->update_site_id), - 0, 1 - ); - $element = (string) $db->loadResult(); - - if (empty($element)) - { - continue; - } - - // Upsert - $db->setQuery( - $db->getQuery(true) - ->select('COUNT(*)') - ->from($db->quoteName('#__mokowaas_download_keys')) - ->where($db->quoteName('element') . ' = ' . $db->quote($element)) - ); - - if ((int) $db->loadResult() > 0) - { - $db->setQuery( - $db->getQuery(true) - ->update($db->quoteName('#__mokowaas_download_keys')) - ->set($db->quoteName('dlid') . ' = ' . $db->quote($dlid)) - ->set($db->quoteName('location') . ' = ' . $db->quote($row->location)) - ->set($db->quoteName('modified') . ' = ' . $db->quote($now)) - ->where($db->quoteName('element') . ' = ' . $db->quote($element)) - )->execute(); - } - else - { - $db->setQuery( - $db->getQuery(true) - ->insert($db->quoteName('#__mokowaas_download_keys')) - ->columns([$db->quoteName('element'), $db->quoteName('location'), $db->quoteName('dlid'), $db->quoteName('created'), $db->quoteName('modified')]) - ->values(implode(',', [ - $db->quote($element), $db->quote($row->location), $db->quote($dlid), $db->quote($now), $db->quote($now), - ])) - )->execute(); - } - } - } - catch (\Throwable $e) - { - // Non-critical — table may not exist yet - } - } - - /** - * Re-apply all download keys from our persistent database table. - */ - private function reapplyKeysFromDatabase(): void - { - try - { - $db = Factory::getDbo(); - $tables = $db->getTableList(); - $prefix = $db->getPrefix(); - - if (!\in_array($prefix . 'mokowaas_download_keys', $tables, true)) - { - return; - } - - $db->setQuery( - $db->getQuery(true) - ->select('*') - ->from($db->quoteName('#__mokowaas_download_keys')) - ->where($db->quoteName('dlid') . ' != ' . $db->quote('')) - ); - $keys = $db->loadObjectList() ?: []; - - $restored = 0; - - foreach ($keys as $key) - { - $db->setQuery( - $db->getQuery(true) - ->select('us.' . $db->quoteName('update_site_id')) - ->from($db->quoteName('#__update_sites', 'us')) - ->join('INNER', $db->quoteName('#__update_sites_extensions', 'use') . ' ON us.update_site_id = use.update_site_id') - ->join('INNER', $db->quoteName('#__extensions', 'e') . ' ON e.extension_id = use.extension_id') - ->where($db->quoteName('e.element') . ' = ' . $db->quote($key->element)) - ->where('(' . $db->quoteName('us.extra_query') . ' = ' . $db->quote('') - . ' OR ' . $db->quoteName('us.extra_query') . ' NOT LIKE ' . $db->quote('%dlid=%') . ')') - ); - $siteIds = $db->loadColumn() ?: []; - - foreach ($siteIds as $siteId) - { - $db->setQuery( - $db->getQuery(true) - ->update($db->quoteName('#__update_sites')) - ->set($db->quoteName('extra_query') . ' = ' . $db->quote('dlid=' . $key->dlid)) - ->where($db->quoteName('update_site_id') . ' = ' . (int) $siteId) - )->execute(); - $restored++; - } - } - - if ($restored > 0) - { - Factory::getApplication()->enqueueMessage( - sprintf('Re-applied %d download key(s) from persistent storage.', $restored), - 'message' - ); - } - } - catch (\Throwable $e) - { - // Non-critical - } - } - /** * Restore download keys that were cleared by update site cleanup. * From 77c160a64e5f98e4420ca848531d3c456477f847 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 16:25:24 -0500 Subject: [PATCH 28/73] fix: rename migration to 02.34.28 so it runs on current dev version --- .../admin/sql/updates/mysql/{02.35.00.sql => 02.34.28.sql} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename source/packages/com_mokowaas/admin/sql/updates/mysql/{02.35.00.sql => 02.34.28.sql} (100%) diff --git a/source/packages/com_mokowaas/admin/sql/updates/mysql/02.35.00.sql b/source/packages/com_mokowaas/admin/sql/updates/mysql/02.34.28.sql similarity index 100% rename from source/packages/com_mokowaas/admin/sql/updates/mysql/02.35.00.sql rename to source/packages/com_mokowaas/admin/sql/updates/mysql/02.34.28.sql From 1a3a125b82c152e5dd291bc3e211f0b6a46624d3 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sat, 6 Jun 2026 21:26:39 +0000 Subject: [PATCH 29/73] chore(version): pre-release bump to 02.34.28-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- .../plg_webservices_perfectpublisher/perfectpublisher.xml | 2 +- .../plg_webservices_perfectpublisher/services/provider.php | 2 +- .../src/Extension/PerfectPublisherApi.php | 2 +- source/pkg_mokowaas.xml | 2 +- 45 files changed, 55 insertions(+), 55 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 33c2f271..ce73c268 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.27 + 02.34.28 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 4b2d157a..28d9c05f 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.27 +# VERSION: 02.34.28 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index a332fcde..7b47cd95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.27 + VERSION: 02.34.28 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index f1dbc343..9760af60 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.27 + VERSION: 02.34.28 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index cc3e5586..20473f4b 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.27 + VERSION: 02.34.28 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index 1ad96cab..be8a5035 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.27 + VERSION: 02.34.28 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index d5688d4f..8f370c3e 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.27 + VERSION: 02.34.28 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index 0a50c1ba..0ab87f25 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.27 +VERSION: 02.34.28 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index edf2f7bb..29a32080 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.27 + VERSION: 02.34.28 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.27) +# MokoWaaS Build Guide (VERSION: 02.34.28) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index cd43c797..dfe9a47e 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.27 + VERSION: 02.34.28 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.27) +# MokoWaaS Configuration Guide (VERSION: 02.34.28) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index 4f275536..90913a7b 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.27 + VERSION: 02.34.28 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.27) +# MokoWaaS Installation Guide (VERSION: 02.34.28) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index 29375acd..fc1f8605 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.27 + VERSION: 02.34.28 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.27) +# MokoWaaS Operations Guide (VERSION: 02.34.28) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index 30f811af..7ab391f7 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.27 + VERSION: 02.34.28 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.27) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.28) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index 90573e43..647ed011 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.27 + VERSION: 02.34.28 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.27) +# MokoWaaS Testing Guide (VERSION: 02.34.28) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index ac0a9040..321da8c5 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.27 + VERSION: 02.34.28 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.27) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.28) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index 42f0a0a6..d01eb948 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.27 + VERSION: 02.34.28 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.27) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.28) ## Introduction diff --git a/docs/index.md b/docs/index.md index a926eae3..199a70e4 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.27 + VERSION: 02.34.28 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.27) +# MokoWaaS Documentation Index (VERSION: 02.34.28) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index e5d5b8c2..dd110694 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.27 + VERSION: 02.34.28 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.27) +# MokoWaaS Plugin Overview (VERSION: 02.34.28) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index fecbd932..43a69d75 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.27 +VERSION: 02.34.28 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index 61588358..2b787849 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.27-dev + 02.34.28-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index 4c624025..29703fbe 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.27-dev + 02.34.28-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index c78424c4..30b2cf2f 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.27-dev + 02.34.28-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index 3f8e8aab..9ccc5087 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.27-dev + 02.34.28-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index 16020246..b2fa0dcd 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.27-dev + 02.34.28-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index d782f3df..a4f7f8b6 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.27 + * VERSION: 02.34.28 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index e29c350e..01d4236c 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.27 + * VERSION: 02.34.28 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index 17bbcc90..211ae3c9 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.27-dev + 02.34.28-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index 789c9884..469874a4 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.27 + * VERSION: 02.34.28 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index 3980164d..6511e22f 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.27 + * VERSION: 02.34.28 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index 0f185920..07191d31 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.27-dev + 02.34.28-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index 207b0233..b50bb5e2 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.27-dev + 02.34.28-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index d155e161..656d6860 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.27-dev + 02.34.28-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index ae992cb8..353ced6b 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.27-dev + 02.34.28-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index fd0439fd..70ca8289 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.27-dev + 02.34.28-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index 29223453..a85c6f08 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.27-dev + 02.34.28-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index a9ec27f6..e3069364 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.27-dev + 02.34.28-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index 91b0e667..d3ea055a 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.27 + * VERSION: 02.34.28 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 986f983d..5ded1f8f 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.27-dev + 02.34.28-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index 299e74eb..42e82406 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.27 + * VERSION: 02.34.28 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index 4795479f..7367e423 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.27 + * VERSION: 02.34.28 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index 486aa417..c9212049 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.27-dev + 02.34.28-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml index 591c2aab..b4a60bfd 100644 --- a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml +++ b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.27-dev + 02.34.28-dev Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds. Moko\Plugin\WebServices\PerfectPublisher diff --git a/source/packages/plg_webservices_perfectpublisher/services/provider.php b/source/packages/plg_webservices_perfectpublisher/services/provider.php index 8f0d3781..9e041b5a 100644 --- a/source/packages/plg_webservices_perfectpublisher/services/provider.php +++ b/source/packages/plg_webservices_perfectpublisher/services/provider.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/services/provider.php - * VERSION: 02.34.27 + * VERSION: 02.34.28 * BRIEF: DI service provider for Perfect Publisher Web Services plugin */ diff --git a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php index d3398c63..54cd1a30 100644 --- a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php +++ b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php - * VERSION: 02.34.27 + * VERSION: 02.34.28 * BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet) */ diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index 5e58b3dc..05b7e8ea 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.27-dev + 02.34.28-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From 0ffafeb24793339582ca60bc000d110355a0c00f Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 17:36:17 -0500 Subject: [PATCH 30/73] refactor: remove universal download key handler, use single-key pattern MokoWaaS now only saves/restores its own download key (pkg_mokowaas), matching the pattern used by all other Moko extensions. Removed the universal backupDownloadKeys/restoreDownloadKeys and the runtime preserveDownloadKeys no-op from the core plugin. Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) --- .../Extension/MokoWaaS.php | 7 - source/script.php | 124 +++++------------- 2 files changed, 30 insertions(+), 101 deletions(-) diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index a4f7f8b6..469a41c8 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -172,7 +172,6 @@ class MokoWaaS extends CMSPlugin implements BootableExtensionInterface { $this->handleOneTimeLogin(); $this->checkSetupRequired(); - $this->preserveDownloadKeys(); } } @@ -2237,10 +2236,4 @@ class MokoWaaS extends CMSPlugin implements BootableExtensionInterface * * @since 02.34.12 */ - protected function preserveDownloadKeys(): void - { - // Download key preservation is handled by the install script's - // preflight/postflight (backupDownloadKeys/restoreDownloadKeys). - // No runtime action needed — the preflight fix catches the wipe. - } } diff --git a/source/script.php b/source/script.php index 1cf217fe..c0c63580 100644 --- a/source/script.php +++ b/source/script.php @@ -39,15 +39,12 @@ class Pkg_MokowaasInstallerScript * with no default, causing INSERT failures when Joomla's package installer * creates placeholder rows before processing sub-extension manifests. */ - /** @var array Download keys saved before Joomla wipes update sites */ - private array $savedDownloadKeys = []; + /** @var string|null Download key saved before Joomla wipes update sites */ + private ?string $savedDownloadKey = null; public function preflight($type, $parent) { - // CRITICAL: backup download keys BEFORE Joomla's installer wipes update sites. - // Joomla deletes and recreates #__update_sites rows from the manifest - // between preflight and postflight, clearing extra_query (dlid). - $this->savedDownloadKeys = $this->backupDownloadKeys(); + $this->saveDownloadKey(); try { @@ -109,8 +106,8 @@ class Pkg_MokowaasInstallerScript // Clean up stale/duplicate update sites $this->cleanupStaleUpdateSites(); - // Restore download keys saved in preflight (before Joomla wiped them) - $this->restoreDownloadKeys($this->savedDownloadKeys); + // Restore download key saved in preflight + $this->restoreDownloadKey(); // Fix orphaned update records (extension_id=0) $this->fixUpdateRecords(); @@ -672,55 +669,33 @@ class Pkg_MokowaasInstallerScript * * @return array Map of update_site_id => extra_query */ - private function backupDownloadKeys(): array + private function saveDownloadKey(): void { - $keys = []; - try { $db = Factory::getDbo(); - - // Get ALL download keys with their element names (stable identifier) $db->setQuery( $db->getQuery(true) - ->select([ - 'us.' . $db->quoteName('update_site_id'), - 'us.' . $db->quoteName('extra_query'), - 'us.' . $db->quoteName('location'), - 'e.' . $db->quoteName('element'), - ]) + ->select($db->quoteName('us.extra_query')) ->from($db->quoteName('#__update_sites', 'us')) - ->join('INNER', $db->quoteName('#__update_sites_extensions', 'use') . ' ON us.update_site_id = use.update_site_id') + ->join('INNER', $db->quoteName('#__update_sites_extensions', 'use') . ' ON use.update_site_id = us.update_site_id') ->join('INNER', $db->quoteName('#__extensions', 'e') . ' ON e.extension_id = use.extension_id') - ->where($db->quoteName('us.extra_query') . ' != ' . $db->quote('')) + ->where($db->quoteName('e.element') . ' = ' . $db->quote('pkg_mokowaas')) + ->setLimit(1) ); - $rows = $db->loadObjectList() ?: []; + $key = $db->loadResult(); - foreach ($rows as $row) + if (!empty($key)) { - // Key by element name (stable), URL, and ID (fallbacks) - $keys['elem_' . $row->element] = $row->extra_query; - $keys[$row->location] = $row->extra_query; - $keys['id_' . $row->update_site_id] = $row->extra_query; + $this->savedDownloadKey = $key; } - } - catch (\Throwable $e) - { - // Non-critical - } - - return $keys; + catch (\Throwable $e) {} } - /** - * Restore download keys that were cleared by update site cleanup. - * - * @param array $savedKeys Map from backupDownloadKeys() - */ - private function restoreDownloadKeys(array $savedKeys): void + private function restoreDownloadKey(): void { - if (empty($savedKeys)) + if ($this->savedDownloadKey === null) { return; } @@ -728,67 +703,28 @@ class Pkg_MokowaasInstallerScript try { $db = Factory::getDbo(); - - // Get update sites with empty extra_query AND their element names $db->setQuery( $db->getQuery(true) - ->select([ - 'us.' . $db->quoteName('update_site_id'), - 'us.' . $db->quoteName('extra_query'), - 'us.' . $db->quoteName('location'), - 'e.' . $db->quoteName('element'), - ]) + ->select($db->quoteName('us.update_site_id')) ->from($db->quoteName('#__update_sites', 'us')) - ->join('LEFT', $db->quoteName('#__update_sites_extensions', 'use') . ' ON us.update_site_id = use.update_site_id') - ->join('LEFT', $db->quoteName('#__extensions', 'e') . ' ON e.extension_id = use.extension_id') - ->where('(' . $db->quoteName('us.extra_query') . ' = ' . $db->quote('') - . ' OR ' . $db->quoteName('us.extra_query') . ' NOT LIKE ' . $db->quote('%dlid=%') . ')') + ->join('INNER', $db->quoteName('#__update_sites_extensions', 'use') . ' ON use.update_site_id = us.update_site_id') + ->join('INNER', $db->quoteName('#__extensions', 'e') . ' ON e.extension_id = use.extension_id') + ->where($db->quoteName('e.element') . ' = ' . $db->quote('pkg_mokowaas')) + ->setLimit(1) ); - $sites = $db->loadObjectList() ?: []; + $siteId = (int) $db->loadResult(); - $restored = 0; - - foreach ($sites as $site) + if ($siteId > 0) { - $element = (string) ($site->element ?? ''); - - // Match by element name first (stable), then URL, then old ID - $key = ''; - - if ($element !== '') - { - $key = $savedKeys['elem_' . $element] ?? ''; - } - - if (empty($key)) - { - $key = $savedKeys[$site->location] ?? $savedKeys['id_' . $site->update_site_id] ?? ''; - } - - if (!empty($key)) - { - $db->setQuery( - $db->getQuery(true) - ->update($db->quoteName('#__update_sites')) - ->set($db->quoteName('extra_query') . ' = ' . $db->quote($key)) - ->where($db->quoteName('update_site_id') . ' = ' . (int) $site->update_site_id) - )->execute(); - $restored++; - } - } - - if ($restored > 0) - { - Factory::getApplication()->enqueueMessage( - sprintf('Restored %d download key(s) after update site cleanup.', $restored), - 'message' - ); + $db->setQuery( + $db->getQuery(true) + ->update($db->quoteName('#__update_sites')) + ->set($db->quoteName('extra_query') . ' = ' . $db->quote($this->savedDownloadKey)) + ->where($db->quoteName('update_site_id') . ' = ' . $siteId) + )->execute(); } } - catch (\Throwable $e) - { - // Non-critical - } + catch (\Throwable $e) {} } /** From 2ff323b92062c196db42bcc0fff79cedde770c42 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sat, 6 Jun 2026 22:37:06 +0000 Subject: [PATCH 31/73] chore(version): pre-release bump to 02.34.29-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- .../plg_webservices_perfectpublisher/perfectpublisher.xml | 2 +- .../plg_webservices_perfectpublisher/services/provider.php | 2 +- .../src/Extension/PerfectPublisherApi.php | 2 +- source/pkg_mokowaas.xml | 2 +- 45 files changed, 55 insertions(+), 55 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index ce73c268..bd0bf495 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.28 + 02.34.29 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 28d9c05f..c7cb38d0 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.28 +# VERSION: 02.34.29 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 7b47cd95..a2a4faa9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.28 + VERSION: 02.34.29 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 9760af60..1d134139 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.28 + VERSION: 02.34.29 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 20473f4b..b81e1b4f 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.28 + VERSION: 02.34.29 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index be8a5035..88f7926e 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.28 + VERSION: 02.34.29 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index 8f370c3e..492dda84 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.28 + VERSION: 02.34.29 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index 0ab87f25..5aaba1b5 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.28 +VERSION: 02.34.29 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index 29a32080..76fab2fc 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.28 + VERSION: 02.34.29 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.28) +# MokoWaaS Build Guide (VERSION: 02.34.29) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index dfe9a47e..83728291 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.28 + VERSION: 02.34.29 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.28) +# MokoWaaS Configuration Guide (VERSION: 02.34.29) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index 90913a7b..6fc7e177 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.28 + VERSION: 02.34.29 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.28) +# MokoWaaS Installation Guide (VERSION: 02.34.29) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index fc1f8605..bb62c7fe 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.28 + VERSION: 02.34.29 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.28) +# MokoWaaS Operations Guide (VERSION: 02.34.29) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index 7ab391f7..230d8194 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.28 + VERSION: 02.34.29 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.28) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.29) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index 647ed011..518efc9e 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.28 + VERSION: 02.34.29 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.28) +# MokoWaaS Testing Guide (VERSION: 02.34.29) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index 321da8c5..93aded74 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.28 + VERSION: 02.34.29 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.28) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.29) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index d01eb948..2b25f09b 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.28 + VERSION: 02.34.29 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.28) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.29) ## Introduction diff --git a/docs/index.md b/docs/index.md index 199a70e4..09d72d23 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.28 + VERSION: 02.34.29 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.28) +# MokoWaaS Documentation Index (VERSION: 02.34.29) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index dd110694..85f79b0c 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.28 + VERSION: 02.34.29 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.28) +# MokoWaaS Plugin Overview (VERSION: 02.34.29) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index 43a69d75..fac47202 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.28 +VERSION: 02.34.29 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index 2b787849..c7513c96 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.28-dev + 02.34.29-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index 29703fbe..fd1be5ff 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.28-dev + 02.34.29-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index 30b2cf2f..9ba988b5 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.28-dev + 02.34.29-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index 9ccc5087..67269ef7 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.28-dev + 02.34.29-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index b2fa0dcd..1bfdac0c 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.28-dev + 02.34.29-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 469a41c8..7ad1d2b1 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.28 + * VERSION: 02.34.29 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index 01d4236c..1b1725cf 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.28 + * VERSION: 02.34.29 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index 211ae3c9..ef8aee85 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.28-dev + 02.34.29-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index 469874a4..c5a566ed 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.28 + * VERSION: 02.34.29 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index 6511e22f..451def9b 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.28 + * VERSION: 02.34.29 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index 07191d31..7df9c4a5 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.28-dev + 02.34.29-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index b50bb5e2..b3fa40b1 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.28-dev + 02.34.29-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index 656d6860..c2dcc6b1 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.28-dev + 02.34.29-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index 353ced6b..326d3379 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.28-dev + 02.34.29-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index 70ca8289..494afa40 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.28-dev + 02.34.29-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index a85c6f08..60a944ad 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.28-dev + 02.34.29-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index e3069364..882564d0 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.28-dev + 02.34.29-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index d3ea055a..87b512ae 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.28 + * VERSION: 02.34.29 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 5ded1f8f..7615baff 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.28-dev + 02.34.29-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index 42e82406..4457e6a0 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.28 + * VERSION: 02.34.29 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index 7367e423..999186fe 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.28 + * VERSION: 02.34.29 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index c9212049..4891bedf 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.28-dev + 02.34.29-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml index b4a60bfd..dc9e6789 100644 --- a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml +++ b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.28-dev + 02.34.29-dev Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds. Moko\Plugin\WebServices\PerfectPublisher diff --git a/source/packages/plg_webservices_perfectpublisher/services/provider.php b/source/packages/plg_webservices_perfectpublisher/services/provider.php index 9e041b5a..2453c957 100644 --- a/source/packages/plg_webservices_perfectpublisher/services/provider.php +++ b/source/packages/plg_webservices_perfectpublisher/services/provider.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/services/provider.php - * VERSION: 02.34.28 + * VERSION: 02.34.29 * BRIEF: DI service provider for Perfect Publisher Web Services plugin */ diff --git a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php index 54cd1a30..d8a61052 100644 --- a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php +++ b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php - * VERSION: 02.34.28 + * VERSION: 02.34.29 * BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet) */ diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index 05b7e8ea..1abaef5a 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.28-dev + 02.34.29-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From de78e66da1873800a81de130cec54c067d942b58 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 17:40:09 -0500 Subject: [PATCH 32/73] feat: Send Heartbeat button next to token field Adds a heart icon button in the token field input group that triggers an AJAX heartbeat to MokoWaaSBase. Shows spinner while sending, green check on success, red X on failure. Uses the monitor plugin's configured base_url and the core plugin's health_api_token. Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) --- .../src/Controller/DisplayController.php | 90 +++++++++++++++++++ .../Field/CopyableTokenField.php | 31 ++++++- 2 files changed, 119 insertions(+), 2 deletions(-) diff --git a/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php b/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php index e8ecb437..ad76a4e2 100644 --- a/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php +++ b/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php @@ -80,6 +80,96 @@ class DisplayController extends BaseController } // ================================================================== + // Heartbeat + // ================================================================== + + public function sendHeartbeat() + { + Session::checkToken() or die(Text::_('JINVALID_TOKEN')); + + try + { + $monitorPlugin = \Joomla\CMS\Plugin\PluginHelper::getPlugin('system', 'mokowaas_monitor'); + + if (!$monitorPlugin) + { + $this->jsonResponse(['success' => false, 'message' => 'Monitor plugin not enabled.']); + + return; + } + + $params = new \Joomla\Registry\Registry($monitorPlugin->params); + $baseUrl = rtrim($params->get('base_url', ''), '/'); + + if (empty($baseUrl)) + { + $this->jsonResponse(['success' => false, 'message' => 'MokoWaaSBase URL not configured in monitor plugin.']); + + return; + } + + $corePlugin = \Joomla\CMS\Plugin\PluginHelper::getPlugin('system', 'mokowaas'); + $coreParams = new \Joomla\Registry\Registry($corePlugin ? $corePlugin->params : '{}'); + $healthToken = $coreParams->get('health_api_token', ''); + + if (empty($healthToken)) + { + $this->jsonResponse(['success' => false, 'message' => 'Health token not configured.']); + + return; + } + + $siteUrl = rtrim(\Joomla\CMS\Uri\Uri::root(), '/'); + $domain = parse_url($siteUrl, PHP_URL_HOST) ?: ''; + + $payload = json_encode([ + 'token' => $healthToken, + 'domain' => $domain, + 'site_name' => Factory::getConfig()->get('sitename', 'Joomla'), + 'site_url' => $siteUrl, + 'joomla_version' => (new \Joomla\CMS\Version())->getShortVersion(), + 'php_version' => PHP_VERSION, + ], JSON_UNESCAPED_SLASHES); + + $endpoint = $baseUrl . '/api/index.php/v1/mokowaasbase/heartbeat'; + + $ch = curl_init($endpoint); + curl_setopt_array($ch, [ + CURLOPT_POST => true, + CURLOPT_HTTPHEADER => ['Content-Type: application/json'], + CURLOPT_POSTFIELDS => $payload, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_TIMEOUT => 15, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_SSL_VERIFYPEER => false, + ]); + + $response = curl_exec($ch); + $code = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE); + $error = curl_error($ch); + curl_close($ch); + + if ($error) + { + $this->jsonResponse(['success' => false, 'message' => 'Connection failed: ' . $error]); + } + elseif ($code >= 200 && $code < 300) + { + $body = json_decode($response, true); + $this->jsonResponse(['success' => true, 'message' => 'Heartbeat sent: ' . ($body['status'] ?? 'ok')]); + } + else + { + $body = json_decode($response, true); + $this->jsonResponse(['success' => false, 'message' => 'HTTP ' . $code . ': ' . ($body['error'] ?? $body['message'] ?? 'Unknown')]); + } + } + catch (\Throwable $e) + { + $this->jsonResponse(['success' => false, 'message' => 'Error: ' . $e->getMessage()]); + } + } + // Cache // ================================================================== diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index 1b1725cf..cb320fc9 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -18,6 +18,7 @@ namespace Moko\Plugin\System\MokoWaaS\Field; defined('_JEXEC') or die; use Joomla\CMS\Form\FormField; +use Joomla\CMS\Session\Session; /** * Renders a read-only text input with a "Copy" button, similar to @@ -39,8 +40,9 @@ class CopyableTokenField extends FormField return '
Token will be generated automatically on first save.
'; } - // Derive a human-readable support PIN from the token - $pin = strtoupper(substr($this->value, 0, 4) . '-' . substr($this->value, 4, 4)); + $pin = strtoupper(substr($this->value, 0, 4) . '-' . substr($this->value, 4, 4)); + $token = Session::getFormToken(); + $ajaxUrl = 'index.php?option=com_mokowaas&task=display.sendHeartbeat&format=json'; return << @@ -60,6 +62,31 @@ class CopyableTokenField extends FormField inp.select(); document.execCommand('copy'); } "> Copy +
MOKO-{$pin} From 1eae4c88a6811c16c55a16fd4f44ffb7be33875c Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sat, 6 Jun 2026 23:04:49 +0000 Subject: [PATCH 33/73] chore(version): pre-release bump to 02.34.30-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- .../plg_webservices_perfectpublisher/perfectpublisher.xml | 2 +- .../plg_webservices_perfectpublisher/services/provider.php | 2 +- .../src/Extension/PerfectPublisherApi.php | 2 +- source/pkg_mokowaas.xml | 2 +- 45 files changed, 55 insertions(+), 55 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index bd0bf495..18c14905 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.29 + 02.34.30 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index c7cb38d0..5eac8b8d 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.29 +# VERSION: 02.34.30 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index a2a4faa9..88770ad2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.29 + VERSION: 02.34.30 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 1d134139..1e495d8d 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.29 + VERSION: 02.34.30 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index b81e1b4f..cb8f3754 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.29 + VERSION: 02.34.30 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index 88f7926e..88c4f78c 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.29 + VERSION: 02.34.30 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index 492dda84..eb035fce 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.29 + VERSION: 02.34.30 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index 5aaba1b5..3966db84 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.29 +VERSION: 02.34.30 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index 76fab2fc..5d119790 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.29 + VERSION: 02.34.30 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.29) +# MokoWaaS Build Guide (VERSION: 02.34.30) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index 83728291..bf757d23 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.29 + VERSION: 02.34.30 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.29) +# MokoWaaS Configuration Guide (VERSION: 02.34.30) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index 6fc7e177..cfb00b91 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.29 + VERSION: 02.34.30 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.29) +# MokoWaaS Installation Guide (VERSION: 02.34.30) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index bb62c7fe..593af972 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.29 + VERSION: 02.34.30 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.29) +# MokoWaaS Operations Guide (VERSION: 02.34.30) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index 230d8194..0bbfaad4 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.29 + VERSION: 02.34.30 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.29) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.30) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index 518efc9e..443699fa 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.29 + VERSION: 02.34.30 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.29) +# MokoWaaS Testing Guide (VERSION: 02.34.30) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index 93aded74..939dd94a 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.29 + VERSION: 02.34.30 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.29) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.30) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index 2b25f09b..16c21e03 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.29 + VERSION: 02.34.30 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.29) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.30) ## Introduction diff --git a/docs/index.md b/docs/index.md index 09d72d23..32b4f4c1 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.29 + VERSION: 02.34.30 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.29) +# MokoWaaS Documentation Index (VERSION: 02.34.30) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index 85f79b0c..a382896a 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.29 + VERSION: 02.34.30 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.29) +# MokoWaaS Plugin Overview (VERSION: 02.34.30) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index fac47202..e10c7cd3 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.29 +VERSION: 02.34.30 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index c7513c96..6717fc16 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.29-dev + 02.34.30-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index fd1be5ff..f44777b3 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.29-dev + 02.34.30-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index 9ba988b5..d24554ee 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.29-dev + 02.34.30-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index 67269ef7..fb353466 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.29-dev + 02.34.30-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index 1bfdac0c..795f0890 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.29-dev + 02.34.30-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 7ad1d2b1..5e629d23 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.29 + * VERSION: 02.34.30 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index cb320fc9..e4777e60 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.29 + * VERSION: 02.34.30 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index ef8aee85..8534557f 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.29-dev + 02.34.30-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index c5a566ed..a3ad9468 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.29 + * VERSION: 02.34.30 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index 451def9b..92a2bed1 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.29 + * VERSION: 02.34.30 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index 7df9c4a5..74df1c24 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.29-dev + 02.34.30-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index b3fa40b1..f38334e7 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.29-dev + 02.34.30-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index c2dcc6b1..b86a4e1e 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.29-dev + 02.34.30-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index 326d3379..dcd08575 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.29-dev + 02.34.30-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index 494afa40..b1e99117 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.29-dev + 02.34.30-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index 60a944ad..56a87191 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.29-dev + 02.34.30-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index 882564d0..13c823e6 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.29-dev + 02.34.30-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index 87b512ae..fc202f71 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.29 + * VERSION: 02.34.30 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 7615baff..239ce33c 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.29-dev + 02.34.30-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index 4457e6a0..44093651 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.29 + * VERSION: 02.34.30 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index 999186fe..9f769f84 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.29 + * VERSION: 02.34.30 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index 4891bedf..6936a9d6 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.29-dev + 02.34.30-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml index dc9e6789..fee522db 100644 --- a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml +++ b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.29-dev + 02.34.30-dev Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds. Moko\Plugin\WebServices\PerfectPublisher diff --git a/source/packages/plg_webservices_perfectpublisher/services/provider.php b/source/packages/plg_webservices_perfectpublisher/services/provider.php index 2453c957..d7f8ced6 100644 --- a/source/packages/plg_webservices_perfectpublisher/services/provider.php +++ b/source/packages/plg_webservices_perfectpublisher/services/provider.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/services/provider.php - * VERSION: 02.34.29 + * VERSION: 02.34.30 * BRIEF: DI service provider for Perfect Publisher Web Services plugin */ diff --git a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php index d8a61052..5bdd432e 100644 --- a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php +++ b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php @@ -8,7 +8,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php - * VERSION: 02.34.29 + * VERSION: 02.34.30 * BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet) */ diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index 1abaef5a..e898479c 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.29-dev + 02.34.30-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From 2a0e450c53ce3c2a0b521140324851f1692aba49 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 19:56:26 -0500 Subject: [PATCH 34/73] feat: RSA-signed heartbeat authentication MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Client signs domain|timestamp|token with private key (distributed via monitor plugin manifest). Base verifies with public key in component config. Replaces shared secret and key ring approaches — no rotation needed. Includes 5-minute timestamp window for replay protection. --- CHANGELOG.md | 5 ++ .../admin/sql/updates/mysql/02.34.29.sql | 2 + .../src/Controller/DisplayController.php | 3 +- .../mokowaas_monitor.xml | 14 ++-- .../src/Extension/Monitor.php | 78 +++++++++++++++---- 5 files changed, 79 insertions(+), 23 deletions(-) create mode 100644 source/packages/com_mokowaas/admin/sql/updates/mysql/02.34.29.sql diff --git a/CHANGELOG.md b/CHANGELOG.md index a2a4faa9..d07ebaa0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,11 @@ ## [Unreleased] +### Added +- RSA-signed heartbeat authentication — private key in monitor plugin manifest, public key on MokoWaaSBase +- Monitor plugin base_url set via manifest (hidden from admin UI), propagated via update server +- Send Heartbeat button on health token field for manual heartbeat testing + ### Fixed - Download key lost on update: cleanupStaleUpdateSites used old /raw/branch/main/ URL format, deleting the manifest-registered update site that held the key diff --git a/source/packages/com_mokowaas/admin/sql/updates/mysql/02.34.29.sql b/source/packages/com_mokowaas/admin/sql/updates/mysql/02.34.29.sql new file mode 100644 index 00000000..73dd2580 --- /dev/null +++ b/source/packages/com_mokowaas/admin/sql/updates/mysql/02.34.29.sql @@ -0,0 +1,2 @@ +-- RSA signing replaces key ring — drop table if it was created +DROP TABLE IF EXISTS `#__mokowaas_api_keys`; diff --git a/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php b/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php index ad76a4e2..585e6581 100644 --- a/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php +++ b/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php @@ -804,6 +804,7 @@ class DisplayController extends BaseController private function jsonForbidden(): void { $this->jsonResponse(['success' => false, 'message' => Text::_('JLIB_APPLICATION_ERROR_ACCESS_FORBIDDEN')]); -return; + return; } + } diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index c2dcc6b1..e6f0220a 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -37,13 +37,13 @@ - + + + diff --git a/source/packages/plg_system_mokowaas_monitor/src/Extension/Monitor.php b/source/packages/plg_system_mokowaas_monitor/src/Extension/Monitor.php index addcb36a..8329d66f 100644 --- a/source/packages/plg_system_mokowaas_monitor/src/Extension/Monitor.php +++ b/source/packages/plg_system_mokowaas_monitor/src/Extension/Monitor.php @@ -22,8 +22,8 @@ use Moko\Plugin\System\MokoWaaS\Helper\MokoWaaSHelper; * MokoWaaS Health Monitor Plugin * * Sends heartbeat data to a MokoWaaSBase control panel instance. - * The heartbeat includes site identity, version info, and optionally - * the full health check payload from the core plugin. + * Each request is RSA-signed with a private key distributed via + * the package manifest, verified by Base using the matching public key. * * @since 02.32.00 */ @@ -62,7 +62,6 @@ class Monitor extends CMSPlugin implements SubscriberInterface $element = $table->element ?? ''; - // Trigger heartbeat when core or monitor plugin is saved if (!\in_array($element, ['mokowaas', 'mokowaas_monitor'], true)) { return; @@ -79,8 +78,8 @@ class Monitor extends CMSPlugin implements SubscriberInterface /** * Send heartbeat to the MokoWaaSBase control panel. * - * Posts site identity and version info to the MokoWaaSBase REST API. - * The control panel looks up the site by domain and verifies the token. + * The request is RSA-signed: the client signs domain|timestamp|token + * with its private key. Base verifies with the matching public key. */ private function sendHeartbeat(): void { @@ -107,9 +106,9 @@ class Monitor extends CMSPlugin implements SubscriberInterface return; } - $app = $this->getApplication(); - - $config = Factory::getConfig(); + $app = $this->getApplication(); + $config = Factory::getConfig(); + $timestamp = time(); $payload = [ 'token' => $healthToken, @@ -119,13 +118,14 @@ class Monitor extends CMSPlugin implements SubscriberInterface 'joomla_version' => (new Version())->getShortVersion(), 'php_version' => PHP_VERSION, 'mokowaas_version' => $this->getMokoWaaSVersion(), + 'timestamp' => $timestamp, 'client_info' => [ 'company' => $config->get('sitename', ''), 'email' => $config->get('mailfrom', ''), ], ]; - // Include live health data by calling the local health endpoint + // Include live health data $healthData = $this->fetchLocalHealth($siteUrl, $healthToken); if ($healthData !== null) @@ -133,13 +133,23 @@ class Monitor extends CMSPlugin implements SubscriberInterface $payload['health'] = $healthData; } + // RSA sign the request + $headers = ['Content-Type: application/json']; + $signature = $this->signRequest($domain, $timestamp, $healthToken); + + if ($signature !== null) + { + $headers[] = 'X-MokoWaaS-Signature: ' . $signature; + $headers[] = 'X-MokoWaaS-Timestamp: ' . $timestamp; + } + $endpoint = $baseUrl . '/api/index.php/v1/mokowaasbase/heartbeat'; $json = json_encode($payload, JSON_UNESCAPED_SLASHES); $ch = curl_init($endpoint); curl_setopt_array($ch, [ CURLOPT_POST => true, - CURLOPT_HTTPHEADER => ['Content-Type: application/json'], + CURLOPT_HTTPHEADER => $headers, CURLOPT_POSTFIELDS => $json, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 15, @@ -179,13 +189,51 @@ class Monitor extends CMSPlugin implements SubscriberInterface } } + /** + * RSA-sign the request message. + * + * @param string $domain Site domain. + * @param int $timestamp Unix timestamp. + * @param string $token Health API token. + * + * @return string|null Base64-encoded signature, or null if signing fails. + */ + private function signRequest(string $domain, int $timestamp, string $token): ?string + { + $signingKeyB64 = $this->params->get('signing_key', ''); + + if (empty($signingKeyB64)) + { + return null; + } + + $privateKeyPem = base64_decode($signingKeyB64); + + if (empty($privateKeyPem)) + { + return null; + } + + $message = $domain . '|' . $timestamp . '|' . $token; + $privateKey = openssl_pkey_get_private($privateKeyPem); + + if ($privateKey === false) + { + return null; + } + + $signature = ''; + + if (openssl_sign($message, $signature, $privateKey, OPENSSL_ALGO_SHA256)) + { + return base64_encode($signature); + } + + return null; + } + /** * Fetch health data from the local site's health endpoint. - * - * @param string $siteUrl Local site URL. - * @param string $healthToken Health API token. - * - * @return array|null Parsed health data or null on failure. */ private function fetchLocalHealth(string $siteUrl, string $healthToken): ?array { From 6f690816d7d2c2d3efb4d75cf24566230a07e37d Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 19:59:06 -0500 Subject: [PATCH 35/73] chore: remove PerfectPublisher webservices plugin MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit No longer needed — removed plugin directory, package manifest entry, and protected extensions list reference. --- .../perfectpublisher.xml | 17 - .../services/provider.php | 42 -- .../src/Extension/PerfectPublisherApi.php | 539 ------------------ source/pkg_mokowaas.xml | 1 - source/script.php | 3 +- 5 files changed, 1 insertion(+), 601 deletions(-) delete mode 100644 source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml delete mode 100644 source/packages/plg_webservices_perfectpublisher/services/provider.php delete mode 100644 source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php diff --git a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml b/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml deleted file mode 100644 index fee522db..00000000 --- a/source/packages/plg_webservices_perfectpublisher/perfectpublisher.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - Web Services - Perfect Publisher - Moko Consulting - 2026-05-28 - Copyright (C) 2026 Moko Consulting. All rights reserved. - GPL-3.0-or-later - hello@mokoconsulting.tech - https://mokoconsulting.tech - 02.34.30-dev - Joomla Web Services API routes for Perfect Publisher (com_autotweet) — channels, posts, requests, rules, and feeds. - Moko\Plugin\WebServices\PerfectPublisher - - services - src - - diff --git a/source/packages/plg_webservices_perfectpublisher/services/provider.php b/source/packages/plg_webservices_perfectpublisher/services/provider.php deleted file mode 100644 index d7f8ced6..00000000 --- a/source/packages/plg_webservices_perfectpublisher/services/provider.php +++ /dev/null @@ -1,42 +0,0 @@ - - * - * SPDX-License-Identifier: GPL-3.0-or-later - * - * FILE INFORMATION - * DEFGROUP: Joomla.Plugin - * INGROUP: MokoWaaS - * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - * PATH: /source/packages/plg_webservices_perfectpublisher/services/provider.php - * VERSION: 02.34.30 - * BRIEF: DI service provider for Perfect Publisher Web Services plugin - */ - -defined('_JEXEC') or die; - -use Joomla\CMS\Extension\PluginInterface; -use Joomla\CMS\Factory; -use Joomla\CMS\Plugin\PluginHelper; -use Joomla\DI\Container; -use Joomla\DI\ServiceProviderInterface; -use Joomla\Event\DispatcherInterface; -use Moko\Plugin\WebServices\PerfectPublisher\Extension\PerfectPublisherApi; - -return new class implements ServiceProviderInterface -{ - public function register(Container $container): void - { - $container->set( - PluginInterface::class, - function (Container $container) { - $dispatcher = $container->get(DispatcherInterface::class); - $plugin = new PerfectPublisherApi( - $dispatcher, - (array) PluginHelper::getPlugin('webservices', 'perfectpublisher') - ); - $plugin->setApplication(Factory::getApplication()); - return $plugin; - } - ); - } -}; diff --git a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php b/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php deleted file mode 100644 index 5bdd432e..00000000 --- a/source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php +++ /dev/null @@ -1,539 +0,0 @@ - - * - * SPDX-License-Identifier: GPL-3.0-or-later - * - * FILE INFORMATION - * DEFGROUP: Joomla.Plugin - * INGROUP: MokoWaaS - * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - * PATH: /source/packages/plg_webservices_perfectpublisher/src/Extension/PerfectPublisherApi.php - * VERSION: 02.34.30 - * BRIEF: Web Services API plugin for Perfect Publisher (com_autotweet) - */ - -namespace Moko\Plugin\WebServices\PerfectPublisher\Extension; - -defined('_JEXEC') or die; - -use Joomla\CMS\Factory; -use Joomla\CMS\Plugin\CMSPlugin; -use Joomla\CMS\Event\Application\BeforeApiRouteEvent; -use Joomla\CMS\Router\ApiRouter; -use Joomla\Event\SubscriberInterface; - -/** - * Perfect Publisher Web Services API Plugin - * - * Registers REST API routes for Perfect Publisher (com_autotweet) data. - * Provides read access to channels, posts, requests, rules, and feeds. - * Provides write access to create publish requests. - * - * Routes: - * GET /v1/perfectpublisher/channels List social channels - * GET /v1/perfectpublisher/channels/:id Get channel detail - * GET /v1/perfectpublisher/posts List published posts - * GET /v1/perfectpublisher/posts/:id Get post detail - * GET /v1/perfectpublisher/requests List pending requests - * POST /v1/perfectpublisher/requests Create a publish request - * GET /v1/perfectpublisher/rules List publishing rules - * GET /v1/perfectpublisher/feeds List RSS feeds - * GET /v1/perfectpublisher/channeltypes List channel type definitions - * GET /v1/perfectpublisher/stats Dashboard statistics - * - * @since 02.13.01 - */ -final class PerfectPublisherApi extends CMSPlugin implements SubscriberInterface -{ - /** - * @return array - */ - public static function getSubscribedEvents(): array - { - return [ - 'onBeforeApiRoute' => 'onBeforeApiRoute', - ]; - } - - /** - * Register API routes. - * - * @param BeforeApiRouteEvent $event The API route event - * - * @return void - */ - public function onBeforeApiRoute(BeforeApiRouteEvent $event): void - { - $router = $event->getRouter(); - - // All routes are handled by this plugin directly via custom callbacks - // because com_autotweet uses FOF, not standard Joomla MVC - - $router->addRoute( - new \Joomla\Router\Route( - ['GET'], - 'v1/perfectpublisher/channels', - [$this, 'getChannels'] - ) - ); - - $router->addRoute( - new \Joomla\Router\Route( - ['GET'], - 'v1/perfectpublisher/channels/:id', - [$this, 'getChannel'] - ) - ); - - $router->addRoute( - new \Joomla\Router\Route( - ['GET'], - 'v1/perfectpublisher/posts', - [$this, 'getPosts'] - ) - ); - - $router->addRoute( - new \Joomla\Router\Route( - ['GET'], - 'v1/perfectpublisher/posts/:id', - [$this, 'getPost'] - ) - ); - - $router->addRoute( - new \Joomla\Router\Route( - ['GET'], - 'v1/perfectpublisher/requests', - [$this, 'getRequests'] - ) - ); - - $router->addRoute( - new \Joomla\Router\Route( - ['POST'], - 'v1/perfectpublisher/requests', - [$this, 'createRequest'] - ) - ); - - $router->addRoute( - new \Joomla\Router\Route( - ['GET'], - 'v1/perfectpublisher/rules', - [$this, 'getRules'] - ) - ); - - $router->addRoute( - new \Joomla\Router\Route( - ['GET'], - 'v1/perfectpublisher/feeds', - [$this, 'getFeeds'] - ) - ); - - $router->addRoute( - new \Joomla\Router\Route( - ['GET'], - 'v1/perfectpublisher/channeltypes', - [$this, 'getChannelTypes'] - ) - ); - - $router->addRoute( - new \Joomla\Router\Route( - ['GET'], - 'v1/perfectpublisher/stats', - [$this, 'getStats'] - ) - ); - } - - /** - * GET /v1/perfectpublisher/channels - * - * @return void - */ - public function getChannels(): void - { - $db = Factory::getDbo(); - $app = Factory::getApplication(); - $limit = (int) $app->input->get('limit', 20); - $offset = (int) $app->input->get('offset', 0); - - $query = $db->getQuery(true) - ->select('c.*, ct.name AS channeltype_name, ct.max_chars') - ->from($db->quoteName('#__autotweet_channels', 'c')) - ->leftJoin( - $db->quoteName('#__autotweet_channeltypes', 'ct') - . ' ON ' . $db->quoteName('c.channeltype_id') - . ' = ' . $db->quoteName('ct.id') - ) - ->order($db->quoteName('c.ordering') . ' ASC'); - - $published = $app->input->get('published', null); - if ($published !== null) { - $query->where($db->quoteName('c.published') . ' = ' . (int) $published); - } - - $db->setQuery($query, $offset, $limit); - - $this->sendJsonResponse($db->loadObjectList()); - } - - /** - * GET /v1/perfectpublisher/channels/:id - * - * @return void - */ - public function getChannel(): void - { - $id = (int) Factory::getApplication()->input->get('id', 0); - $db = Factory::getDbo(); - - $query = $db->getQuery(true) - ->select('c.*, ct.name AS channeltype_name, ct.max_chars, ct.description AS channeltype_desc') - ->from($db->quoteName('#__autotweet_channels', 'c')) - ->leftJoin( - $db->quoteName('#__autotweet_channeltypes', 'ct') - . ' ON ' . $db->quoteName('c.channeltype_id') - . ' = ' . $db->quoteName('ct.id') - ) - ->where($db->quoteName('c.id') . ' = ' . $id); - - $db->setQuery($query); - $result = $db->loadObject(); - - if (!$result) { - $this->sendJsonError('Channel not found', 404); - return; - } - - // Strip sensitive OAuth params - if (isset($result->params)) { - $params = json_decode($result->params, true); - if (is_array($params)) { - foreach (['access_token', 'access_secret', 'client_secret', 'api_secret', 'password'] as $key) { - if (isset($params[$key])) { - $params[$key] = '***'; - } - } - $result->params = json_encode($params); - } - } - - $this->sendJsonResponse($result); - } - - /** - * GET /v1/perfectpublisher/posts - * - * @return void - */ - public function getPosts(): void - { - $db = Factory::getDbo(); - $app = Factory::getApplication(); - $limit = (int) $app->input->get('limit', 20); - $offset = (int) $app->input->get('offset', 0); - - $query = $db->getQuery(true) - ->select('p.*, c.name AS channel_name') - ->from($db->quoteName('#__autotweet_posts', 'p')) - ->leftJoin( - $db->quoteName('#__autotweet_channels', 'c') - . ' ON ' . $db->quoteName('p.channel_id') - . ' = ' . $db->quoteName('c.id') - ) - ->order($db->quoteName('p.postdate') . ' DESC'); - - $pubstate = $app->input->get('pubstate', ''); - if ($pubstate !== '') { - $query->where($db->quoteName('p.pubstate') . ' = ' . $db->quote($pubstate)); - } - - $channel = (int) $app->input->get('channel_id', 0); - if ($channel > 0) { - $query->where($db->quoteName('p.channel_id') . ' = ' . $channel); - } - - $db->setQuery($query, $offset, $limit); - - $this->sendJsonResponse($db->loadObjectList()); - } - - /** - * GET /v1/perfectpublisher/posts/:id - * - * @return void - */ - public function getPost(): void - { - $id = (int) Factory::getApplication()->input->get('id', 0); - $db = Factory::getDbo(); - - $query = $db->getQuery(true) - ->select('p.*, c.name AS channel_name, ct.name AS channeltype_name') - ->from($db->quoteName('#__autotweet_posts', 'p')) - ->leftJoin( - $db->quoteName('#__autotweet_channels', 'c') - . ' ON ' . $db->quoteName('p.channel_id') - . ' = ' . $db->quoteName('c.id') - ) - ->leftJoin( - $db->quoteName('#__autotweet_channeltypes', 'ct') - . ' ON ' . $db->quoteName('c.channeltype_id') - . ' = ' . $db->quoteName('ct.id') - ) - ->where($db->quoteName('p.id') . ' = ' . $id); - - $db->setQuery($query); - $result = $db->loadObject(); - - if (!$result) { - $this->sendJsonError('Post not found', 404); - return; - } - - $this->sendJsonResponse($result); - } - - /** - * GET /v1/perfectpublisher/requests - * - * @return void - */ - public function getRequests(): void - { - $db = Factory::getDbo(); - $app = Factory::getApplication(); - $limit = (int) $app->input->get('limit', 20); - $offset = (int) $app->input->get('offset', 0); - - $query = $db->getQuery(true) - ->select('*') - ->from($db->quoteName('#__autotweet_requests')) - ->order($db->quoteName('publish_up') . ' ASC'); - - $published = $app->input->get('published', null); - if ($published !== null) { - $query->where($db->quoteName('published') . ' = ' . (int) $published); - } - - $db->setQuery($query, $offset, $limit); - - $this->sendJsonResponse($db->loadObjectList()); - } - - /** - * POST /v1/perfectpublisher/requests - * - * Create a new publish request. Required fields: description. - * Optional: url, image_url, publish_up, plugin, priority. - * - * @return void - */ - public function createRequest(): void - { - $app = Factory::getApplication(); - $db = Factory::getDbo(); - $data = json_decode($app->input->json->getRaw(), true); - - if (empty($data['description'])) { - $this->sendJsonError('Field "description" is required', 400); - return; - } - - $now = Factory::getDate()->toSql(); - $user = Factory::getUser(); - - $row = (object) [ - 'ref_id' => $data['ref_id'] ?? null, - 'plugin' => $data['plugin'] ?? 'manual-api', - 'priority' => (int) ($data['priority'] ?? 5), - 'publish_up' => $data['publish_up'] ?? $now, - 'description' => $data['description'], - 'typeinfo' => (int) ($data['typeinfo'] ?? 0), - 'url' => $data['url'] ?? null, - 'image_url' => $data['image_url'] ?? null, - 'created' => $now, - 'created_by' => $user->id, - 'params' => json_encode($data['params'] ?? []), - 'published' => (int) ($data['published'] ?? 1), - ]; - - $db->insertObject('#__autotweet_requests', $row, 'id'); - - $this->sendJsonResponse( - ['id' => $row->id, 'status' => 'created'], - 201 - ); - } - - /** - * GET /v1/perfectpublisher/rules - * - * @return void - */ - public function getRules(): void - { - $db = Factory::getDbo(); - - $query = $db->getQuery(true) - ->select('r.*, rt.name AS ruletype_name, rt.description AS ruletype_desc, c.name AS channel_name') - ->from($db->quoteName('#__autotweet_rules', 'r')) - ->leftJoin( - $db->quoteName('#__autotweet_ruletypes', 'rt') - . ' ON ' . $db->quoteName('r.ruletype_id') - . ' = ' . $db->quoteName('rt.id') - ) - ->leftJoin( - $db->quoteName('#__autotweet_channels', 'c') - . ' ON ' . $db->quoteName('r.channel_id') - . ' = ' . $db->quoteName('c.id') - ) - ->order($db->quoteName('r.ordering') . ' ASC'); - - $db->setQuery($query); - - $this->sendJsonResponse($db->loadObjectList()); - } - - /** - * GET /v1/perfectpublisher/feeds - * - * @return void - */ - public function getFeeds(): void - { - $db = Factory::getDbo(); - - $query = $db->getQuery(true) - ->select('*') - ->from($db->quoteName('#__autotweet_feeds')) - ->order($db->quoteName('ordering') . ' ASC'); - - $db->setQuery($query); - - $this->sendJsonResponse($db->loadObjectList()); - } - - /** - * GET /v1/perfectpublisher/channeltypes - * - * @return void - */ - public function getChannelTypes(): void - { - $db = Factory::getDbo(); - - $query = $db->getQuery(true) - ->select('*') - ->from($db->quoteName('#__autotweet_channeltypes')) - ->order($db->quoteName('id') . ' ASC'); - - $db->setQuery($query); - - $this->sendJsonResponse($db->loadObjectList()); - } - - /** - * GET /v1/perfectpublisher/stats - * - * Dashboard statistics: post counts by status, channel counts, recent activity. - * - * @return void - */ - public function getStats(): void - { - $db = Factory::getDbo(); - - // Posts by status - $db->setQuery( - $db->getQuery(true) - ->select('pubstate, COUNT(*) AS total') - ->from($db->quoteName('#__autotweet_posts')) - ->group($db->quoteName('pubstate')) - ); - $postsByStatus = $db->loadObjectList('pubstate'); - - // Active channels - $db->setQuery( - $db->getQuery(true) - ->select('COUNT(*) AS total') - ->from($db->quoteName('#__autotweet_channels')) - ->where($db->quoteName('published') . ' = 1') - ); - $activeChannels = (int) $db->loadResult(); - - // Pending requests - $db->setQuery( - $db->getQuery(true) - ->select('COUNT(*) AS total') - ->from($db->quoteName('#__autotweet_requests')) - ->where($db->quoteName('published') . ' = 1') - ); - $pendingRequests = (int) $db->loadResult(); - - // Posts last 24h - $db->setQuery( - $db->getQuery(true) - ->select('COUNT(*) AS total') - ->from($db->quoteName('#__autotweet_posts')) - ->where($db->quoteName('postdate') . ' >= DATE_SUB(NOW(), INTERVAL 1 DAY)') - ); - $posts24h = (int) $db->loadResult(); - - // Posts last 7d - $db->setQuery( - $db->getQuery(true) - ->select('COUNT(*) AS total') - ->from($db->quoteName('#__autotweet_posts')) - ->where($db->quoteName('postdate') . ' >= DATE_SUB(NOW(), INTERVAL 7 DAY)') - ); - $posts7d = (int) $db->loadResult(); - - $this->sendJsonResponse([ - 'posts_by_status' => $postsByStatus, - 'active_channels' => $activeChannels, - 'pending_requests' => $pendingRequests, - 'posts_24h' => $posts24h, - 'posts_7d' => $posts7d, - ]); - } - - /** - * Send a JSON API response. - * - * @param mixed $data Response data - * @param int $status HTTP status code - * - * @return void - */ - private function sendJsonResponse($data, int $status = 200): void - { - $app = Factory::getApplication(); - $app->setHeader('Content-Type', 'application/json; charset=utf-8'); - $app->setHeader('Status', (string) $status); - echo json_encode(['data' => $data], JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT); - $app->close(); - } - - /** - * Send a JSON error response. - * - * @param string $message Error message - * @param int $status HTTP status code - * - * @return void - */ - private function sendJsonError(string $message, int $status = 400): void - { - $app = Factory::getApplication(); - $app->setHeader('Content-Type', 'application/json; charset=utf-8'); - $app->setHeader('Status', (string) $status); - echo json_encode(['error' => $message], JSON_UNESCAPED_SLASHES); - $app->close(); - } -} diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index e898479c..07365e9e 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -26,7 +26,6 @@ mod_mokowaas_cache.zip mod_mokowaas_categories.zip plg_webservices_mokowaas.zip - plg_webservices_perfectpublisher.zip plg_task_mokowaasdemo.zip plg_task_mokowaassync.zip plg_task_mokowaas_tickets.zip diff --git a/source/script.php b/source/script.php index c0c63580..5bca126c 100644 --- a/source/script.php +++ b/source/script.php @@ -498,8 +498,7 @@ class Pkg_MokowaasInstallerScript $db->quote('mokowaasdemo'), $db->quote('mokowaassync'), $db->quote('mokowaas_tickets'), - $db->quote('perfectpublisher'), - $db->quote('mokoonyx'), + $db->quote('mokoonyx'), ]; $query = $db->getQuery(true) From 5c35a1aff8d171330b0d6d11baa76391aa523a87 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 19:59:53 -0500 Subject: [PATCH 36/73] docs: update changelog with PerfectPublisher removal --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7e17c309..cded4bdb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,9 @@ - Monitor plugin base_url set via manifest (hidden from admin UI), propagated via update server - Send Heartbeat button on health token field for manual heartbeat testing +### Removed +- PerfectPublisher webservices plugin (no longer needed) + ### Fixed - Download key lost on update: cleanupStaleUpdateSites used old /raw/branch/main/ URL format, deleting the manifest-registered update site that held the key From a03eabc636819d31488e1018946e5f047b56201f Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sun, 7 Jun 2026 01:00:27 +0000 Subject: [PATCH 37/73] chore(version): pre-release bump to 02.34.31-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- source/pkg_mokowaas.xml | 2 +- 42 files changed, 52 insertions(+), 52 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 18c14905..b353cf93 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.30 + 02.34.31 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 5eac8b8d..cf455500 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.30 +# VERSION: 02.34.31 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index cded4bdb..987a714e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.30 + VERSION: 02.34.31 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 1e495d8d..08d977b8 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.30 + VERSION: 02.34.31 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index cb8f3754..f590b7a2 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.30 + VERSION: 02.34.31 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index 88c4f78c..9a9c4a36 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.30 + VERSION: 02.34.31 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index eb035fce..4c107e54 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.30 + VERSION: 02.34.31 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index 3966db84..04cc2246 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.30 +VERSION: 02.34.31 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index 5d119790..9c0bf6ea 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.30 + VERSION: 02.34.31 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.30) +# MokoWaaS Build Guide (VERSION: 02.34.31) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index bf757d23..801e7ae1 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.30 + VERSION: 02.34.31 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.30) +# MokoWaaS Configuration Guide (VERSION: 02.34.31) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index cfb00b91..3021eac4 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.30 + VERSION: 02.34.31 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.30) +# MokoWaaS Installation Guide (VERSION: 02.34.31) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index 593af972..dbe3d8b9 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.30 + VERSION: 02.34.31 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.30) +# MokoWaaS Operations Guide (VERSION: 02.34.31) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index 0bbfaad4..fb53760c 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.30 + VERSION: 02.34.31 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.30) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.31) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index 443699fa..67a450cf 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.30 + VERSION: 02.34.31 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.30) +# MokoWaaS Testing Guide (VERSION: 02.34.31) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index 939dd94a..84d3ea1e 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.30 + VERSION: 02.34.31 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.30) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.31) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index 16c21e03..182e9664 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.30 + VERSION: 02.34.31 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.30) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.31) ## Introduction diff --git a/docs/index.md b/docs/index.md index 32b4f4c1..df0ccab7 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.30 + VERSION: 02.34.31 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.30) +# MokoWaaS Documentation Index (VERSION: 02.34.31) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index a382896a..d781a06d 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.30 + VERSION: 02.34.31 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.30) +# MokoWaaS Plugin Overview (VERSION: 02.34.31) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index e10c7cd3..f27b35c9 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.30 +VERSION: 02.34.31 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index 6717fc16..4781332f 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.30-dev + 02.34.31-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index f44777b3..4a489db8 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.30-dev + 02.34.31-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index d24554ee..3782dd8b 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.30-dev + 02.34.31-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index fb353466..37ff3315 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.30-dev + 02.34.31-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index 795f0890..b6522da8 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.30-dev + 02.34.31-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 5e629d23..32359691 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.30 + * VERSION: 02.34.31 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index e4777e60..79d8556e 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.30 + * VERSION: 02.34.31 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index 8534557f..504c342a 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.30-dev + 02.34.31-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index a3ad9468..05251506 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.30 + * VERSION: 02.34.31 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index 92a2bed1..5e389b89 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.30 + * VERSION: 02.34.31 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index 74df1c24..9339c449 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.30-dev + 02.34.31-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index f38334e7..712142ef 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.30-dev + 02.34.31-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index c8d83776..9c900a4b 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.30-dev + 02.34.31-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index dcd08575..6d2a578a 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.30-dev + 02.34.31-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index b1e99117..b608efc6 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.30-dev + 02.34.31-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index 56a87191..57a1758b 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.30-dev + 02.34.31-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index 13c823e6..8ff2816d 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.30-dev + 02.34.31-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index fc202f71..cfb3fb66 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.30 + * VERSION: 02.34.31 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 239ce33c..3acfbd08 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.30-dev + 02.34.31-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index 44093651..886ffd33 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.30 + * VERSION: 02.34.31 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index 9f769f84..e27db0b6 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.30 + * VERSION: 02.34.31 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index 6936a9d6..a0528193 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.30-dev + 02.34.31-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index 07365e9e..279b7ce9 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.30-dev + 02.34.31-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From aa6d87462b8380b54c43dc3962641033948e12bc Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 20:20:40 -0500 Subject: [PATCH 38/73] fix: add RSA signature to Send Heartbeat button request The manual heartbeat button was not sending the X-MokoWaaS-Signature header, causing Base to reject with 403 when RSA verification is enabled. --- .../src/Controller/DisplayController.php | 30 +++++++++++++++++-- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php b/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php index 585e6581..a74c76b4 100644 --- a/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php +++ b/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php @@ -119,8 +119,9 @@ class DisplayController extends BaseController return; } - $siteUrl = rtrim(\Joomla\CMS\Uri\Uri::root(), '/'); - $domain = parse_url($siteUrl, PHP_URL_HOST) ?: ''; + $siteUrl = rtrim(\Joomla\CMS\Uri\Uri::root(), '/'); + $domain = parse_url($siteUrl, PHP_URL_HOST) ?: ''; + $timestamp = time(); $payload = json_encode([ 'token' => $healthToken, @@ -129,14 +130,37 @@ class DisplayController extends BaseController 'site_url' => $siteUrl, 'joomla_version' => (new \Joomla\CMS\Version())->getShortVersion(), 'php_version' => PHP_VERSION, + 'timestamp' => $timestamp, ], JSON_UNESCAPED_SLASHES); + // RSA sign the request + $headers = ['Content-Type: application/json']; + $signingKeyB64 = $params->get('signing_key', ''); + + if (!empty($signingKeyB64)) + { + $privateKeyPem = base64_decode($signingKeyB64); + $privateKey = openssl_pkey_get_private($privateKeyPem); + + if ($privateKey !== false) + { + $message = $domain . '|' . $timestamp . '|' . $healthToken; + $signature = ''; + + if (openssl_sign($message, $signature, $privateKey, OPENSSL_ALGO_SHA256)) + { + $headers[] = 'X-MokoWaaS-Signature: ' . base64_encode($signature); + $headers[] = 'X-MokoWaaS-Timestamp: ' . $timestamp; + } + } + } + $endpoint = $baseUrl . '/api/index.php/v1/mokowaasbase/heartbeat'; $ch = curl_init($endpoint); curl_setopt_array($ch, [ CURLOPT_POST => true, - CURLOPT_HTTPHEADER => ['Content-Type: application/json'], + CURLOPT_HTTPHEADER => $headers, CURLOPT_POSTFIELDS => $payload, CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 15, From 992b5a2c0deac53317d9360fcd53c271ad439c6f Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sun, 7 Jun 2026 01:21:12 +0000 Subject: [PATCH 39/73] chore(version): pre-release bump to 02.34.32-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- source/pkg_mokowaas.xml | 2 +- 42 files changed, 52 insertions(+), 52 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index b353cf93..59d7efa4 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.31 + 02.34.32 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index cf455500..3b9942b1 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.31 +# VERSION: 02.34.32 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 987a714e..3faef6ab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.31 + VERSION: 02.34.32 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 08d977b8..6149c4b3 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.31 + VERSION: 02.34.32 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index f590b7a2..424b82f8 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.31 + VERSION: 02.34.32 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index 9a9c4a36..cf05b312 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.31 + VERSION: 02.34.32 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index 4c107e54..9c65fb7e 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.31 + VERSION: 02.34.32 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index 04cc2246..c3dd0e87 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.31 +VERSION: 02.34.32 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index 9c0bf6ea..4cc6af5c 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.31 + VERSION: 02.34.32 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.31) +# MokoWaaS Build Guide (VERSION: 02.34.32) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index 801e7ae1..efbb82db 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.31 + VERSION: 02.34.32 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.31) +# MokoWaaS Configuration Guide (VERSION: 02.34.32) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index 3021eac4..312d1899 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.31 + VERSION: 02.34.32 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.31) +# MokoWaaS Installation Guide (VERSION: 02.34.32) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index dbe3d8b9..c5a1dd88 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.31 + VERSION: 02.34.32 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.31) +# MokoWaaS Operations Guide (VERSION: 02.34.32) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index fb53760c..64925203 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.31 + VERSION: 02.34.32 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.31) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.32) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index 67a450cf..408efdb1 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.31 + VERSION: 02.34.32 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.31) +# MokoWaaS Testing Guide (VERSION: 02.34.32) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index 84d3ea1e..dbd81b5e 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.31 + VERSION: 02.34.32 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.31) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.32) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index 182e9664..04f3d968 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.31 + VERSION: 02.34.32 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.31) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.32) ## Introduction diff --git a/docs/index.md b/docs/index.md index df0ccab7..a62a9e4d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.31 + VERSION: 02.34.32 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.31) +# MokoWaaS Documentation Index (VERSION: 02.34.32) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index d781a06d..a1516929 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.31 + VERSION: 02.34.32 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.31) +# MokoWaaS Plugin Overview (VERSION: 02.34.32) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index f27b35c9..97053921 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.31 +VERSION: 02.34.32 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index 4781332f..884dba5b 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.31-dev + 02.34.32-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index 4a489db8..c1196eb3 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.31-dev + 02.34.32-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index 3782dd8b..4f3a77d3 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.31-dev + 02.34.32-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index 37ff3315..0bae07a4 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.31-dev + 02.34.32-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index b6522da8..42e8df8d 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.31-dev + 02.34.32-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 32359691..74945a0a 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.31 + * VERSION: 02.34.32 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index 79d8556e..e669646b 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.31 + * VERSION: 02.34.32 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index 504c342a..2bb2c087 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.31-dev + 02.34.32-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index 05251506..be07667c 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.31 + * VERSION: 02.34.32 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index 5e389b89..1346d3b7 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.31 + * VERSION: 02.34.32 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index 9339c449..d3ad7bb6 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.31-dev + 02.34.32-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index 712142ef..5d38e09b 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.31-dev + 02.34.32-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index 9c900a4b..73f1279a 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.31-dev + 02.34.32-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index 6d2a578a..8e896cc1 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.31-dev + 02.34.32-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index b608efc6..b2fff328 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.31-dev + 02.34.32-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index 57a1758b..e14d2972 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.31-dev + 02.34.32-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index 8ff2816d..5c23835f 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.31-dev + 02.34.32-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index cfb3fb66..f5b00f2f 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.31 + * VERSION: 02.34.32 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 3acfbd08..4902b703 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.31-dev + 02.34.32-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index 886ffd33..5b2e8708 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.31 + * VERSION: 02.34.32 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index e27db0b6..46344a2f 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.31 + * VERSION: 02.34.32 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index a0528193..8e748414 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.31-dev + 02.34.32-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index 279b7ce9..a0bc171d 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.31-dev + 02.34.32-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From c09cfdfcbf9f0a268b8feb66002c2fdd745b2822 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 20:22:13 -0500 Subject: [PATCH 40/73] fix: update install script heartbeat to use MokoWaaSBase with RSA Replaced old Grafana receiver endpoint with MokoWaaSBase heartbeat API. Includes RSA signature from monitor plugin's signing_key param. --- source/script.php | 84 ++++++++++++++++++++++++++++++++++++----------- 1 file changed, 64 insertions(+), 20 deletions(-) diff --git a/source/script.php b/source/script.php index 5bca126c..764c5b16 100644 --- a/source/script.php +++ b/source/script.php @@ -784,42 +784,86 @@ class Pkg_MokowaasInstallerScript try { $db = Factory::getDbo(); + + // Get health token from core plugin $query = $db->getQuery(true) ->select($db->quoteName('params')) ->from($db->quoteName('#__extensions')) ->where($db->quoteName('element') . ' = ' . $db->quote('mokowaas')) ->where($db->quoteName('type') . ' = ' . $db->quote('plugin')) ->where($db->quoteName('folder') . ' = ' . $db->quote('system')); - $params = json_decode((string) $db->setQuery($query)->loadResult()); - - $healthToken = $params->health_api_token ?? ''; + $coreParams = json_decode((string) $db->setQuery($query)->loadResult()); + $healthToken = $coreParams->health_api_token ?? ''; if (empty($healthToken)) { return; } - $siteUrl = rtrim(\Joomla\CMS\Uri\Uri::root(), '/'); - $siteName = Factory::getConfig()->get('sitename', 'Joomla'); + // Get base URL and signing key from monitor plugin + $query = $db->getQuery(true) + ->select($db->quoteName('params')) + ->from($db->quoteName('#__extensions')) + ->where($db->quoteName('element') . ' = ' . $db->quote('mokowaas_monitor')) + ->where($db->quoteName('type') . ' = ' . $db->quote('plugin')) + ->where($db->quoteName('folder') . ' = ' . $db->quote('system')); + $monitorParams = json_decode((string) $db->setQuery($query)->loadResult()); + $baseUrl = rtrim($monitorParams->base_url ?? '', '/'); + + if (empty($baseUrl)) + { + return; + } + + $siteUrl = rtrim(\Joomla\CMS\Uri\Uri::root(), '/'); + $domain = parse_url($siteUrl, PHP_URL_HOST) ?: ''; + $timestamp = time(); $payload = json_encode([ - 'site_url' => $siteUrl, - 'site_name' => $siteName, - 'health_token' => $healthToken, - 'action' => 'register', + 'token' => $healthToken, + 'domain' => $domain, + 'site_name' => Factory::getConfig()->get('sitename', 'Joomla'), + 'site_url' => $siteUrl, + 'joomla_version' => (new \Joomla\CMS\Version())->getShortVersion(), + 'php_version' => PHP_VERSION, + 'timestamp' => $timestamp, ], JSON_UNESCAPED_SLASHES); - $ch = curl_init('https://bench.mokoconsulting.tech/api/waas-heartbeat/register'); - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_HTTPHEADER, [ - 'Content-Type: application/json', - 'X-MokoWaaS-Key: moko-waas-hb-2026-x9k4m', + $headers = ['Content-Type: application/json']; + + // RSA sign the request + $signingKeyB64 = $monitorParams->signing_key ?? ''; + + if (!empty($signingKeyB64)) + { + $privateKeyPem = base64_decode($signingKeyB64); + $privateKey = openssl_pkey_get_private($privateKeyPem); + + if ($privateKey !== false) + { + $message = $domain . '|' . $timestamp . '|' . $healthToken; + $signature = ''; + + if (openssl_sign($message, $signature, $privateKey, OPENSSL_ALGO_SHA256)) + { + $headers[] = 'X-MokoWaaS-Signature: ' . base64_encode($signature); + $headers[] = 'X-MokoWaaS-Timestamp: ' . $timestamp; + } + } + } + + $endpoint = $baseUrl . '/api/index.php/v1/mokowaasbase/heartbeat'; + + $ch = curl_init($endpoint); + curl_setopt_array($ch, [ + CURLOPT_POST => true, + CURLOPT_HTTPHEADER => $headers, + CURLOPT_POSTFIELDS => $payload, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_TIMEOUT => 15, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_SSL_VERIFYPEER => false, ]); - curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_TIMEOUT, 15); - curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $response = curl_exec($ch); $code = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE); @@ -827,7 +871,7 @@ class Pkg_MokowaasInstallerScript if ($code >= 200 && $code < 300) { - Factory::getApplication()->enqueueMessage('Grafana heartbeat: site registered', 'message'); + Factory::getApplication()->enqueueMessage('MokoWaaSBase heartbeat: site registered', 'message'); } } catch (\Throwable $e) From e310d7f3900476636ddddee1f0b097564afe8584 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sun, 7 Jun 2026 01:23:29 +0000 Subject: [PATCH 41/73] chore(version): pre-release bump to 02.34.33-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- source/pkg_mokowaas.xml | 2 +- 42 files changed, 52 insertions(+), 52 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 59d7efa4..1dc7064f 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.32 + 02.34.33 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 3b9942b1..4ee72ec9 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.32 +# VERSION: 02.34.33 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 3faef6ab..0199020c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.32 + VERSION: 02.34.33 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 6149c4b3..dee735e4 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.32 + VERSION: 02.34.33 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 424b82f8..88b0cfc6 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.32 + VERSION: 02.34.33 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index cf05b312..5248ed6a 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.32 + VERSION: 02.34.33 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index 9c65fb7e..8093126d 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.32 + VERSION: 02.34.33 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index c3dd0e87..ee9455d2 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.32 +VERSION: 02.34.33 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index 4cc6af5c..0a199b07 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.32 + VERSION: 02.34.33 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.32) +# MokoWaaS Build Guide (VERSION: 02.34.33) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index efbb82db..31883687 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.32 + VERSION: 02.34.33 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.32) +# MokoWaaS Configuration Guide (VERSION: 02.34.33) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index 312d1899..54fb8015 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.32 + VERSION: 02.34.33 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.32) +# MokoWaaS Installation Guide (VERSION: 02.34.33) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index c5a1dd88..00d0ab97 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.32 + VERSION: 02.34.33 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.32) +# MokoWaaS Operations Guide (VERSION: 02.34.33) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index 64925203..49609180 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.32 + VERSION: 02.34.33 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.32) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.33) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index 408efdb1..16d743a7 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.32 + VERSION: 02.34.33 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.32) +# MokoWaaS Testing Guide (VERSION: 02.34.33) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index dbd81b5e..a760afb3 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.32 + VERSION: 02.34.33 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.32) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.33) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index 04f3d968..7fbd843e 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.32 + VERSION: 02.34.33 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.32) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.33) ## Introduction diff --git a/docs/index.md b/docs/index.md index a62a9e4d..cf65fb2c 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.32 + VERSION: 02.34.33 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.32) +# MokoWaaS Documentation Index (VERSION: 02.34.33) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index a1516929..36175a10 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.32 + VERSION: 02.34.33 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.32) +# MokoWaaS Plugin Overview (VERSION: 02.34.33) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index 97053921..52df598b 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.32 +VERSION: 02.34.33 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index 884dba5b..60a3d75f 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.32-dev + 02.34.33-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index c1196eb3..6b880850 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.32-dev + 02.34.33-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index 4f3a77d3..5bc7a63f 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.32-dev + 02.34.33-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index 0bae07a4..d7ccefa4 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.32-dev + 02.34.33-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index 42e8df8d..c1cd9edc 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.32-dev + 02.34.33-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 74945a0a..d5d9ee4c 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.32 + * VERSION: 02.34.33 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index e669646b..101c0f13 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.32 + * VERSION: 02.34.33 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index 2bb2c087..2b729c60 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.32-dev + 02.34.33-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index be07667c..26019c7a 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.32 + * VERSION: 02.34.33 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index 1346d3b7..0c52aa81 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.32 + * VERSION: 02.34.33 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index d3ad7bb6..7a0255d7 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.32-dev + 02.34.33-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index 5d38e09b..ac2233af 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.32-dev + 02.34.33-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index 73f1279a..8879fc17 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.32-dev + 02.34.33-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index 8e896cc1..b2ef0405 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.32-dev + 02.34.33-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index b2fff328..a274d75a 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.32-dev + 02.34.33-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index e14d2972..1be9a7fb 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.32-dev + 02.34.33-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index 5c23835f..3505a0a9 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.32-dev + 02.34.33-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index f5b00f2f..2045a2e4 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.32 + * VERSION: 02.34.33 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 4902b703..3ba536ab 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.32-dev + 02.34.33-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index 5b2e8708..c47acaa1 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.32 + * VERSION: 02.34.33 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index 46344a2f..1dade472 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.32 + * VERSION: 02.34.33 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index 8e748414..b39460af 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.32-dev + 02.34.33-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index a0bc171d..ad41c17c 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.32-dev + 02.34.33-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From dcff922c565a1f37057d7c71864f982ed3b0e10a Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 20:32:05 -0500 Subject: [PATCH 42/73] fix: exclude MokoWaaSBase from stale update site cleanup cleanupStaleUpdateSites() matched '%MokoWaaS%' which also caught MokoWaaSBase entries, deleting their update server registration. Added NOT LIKE exclusions for MokoWaaSBase. --- source/script.php | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/source/script.php b/source/script.php index 764c5b16..0a29545a 100644 --- a/source/script.php +++ b/source/script.php @@ -595,12 +595,14 @@ class Pkg_MokowaasInstallerScript $db = Factory::getDbo(); $dynamicUrl = 'https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/updates.xml'; - // Find all MokoWaaS update sites + // Find MokoWaaS update sites (exclude MokoWaaSBase and other Moko extensions) $query = $db->getQuery(true) ->select($db->quoteName(['update_site_id', 'location'])) ->from($db->quoteName('#__update_sites')) ->where('(' . $db->quoteName('name') . ' LIKE ' . $db->quote('%MokoWaaS%') - . ' OR ' . $db->quoteName('location') . ' LIKE ' . $db->quote('%MokoWaaS%') . ')'); + . ' OR ' . $db->quoteName('location') . ' LIKE ' . $db->quote('%MokoWaaS%') . ')') + ->where($db->quoteName('name') . ' NOT LIKE ' . $db->quote('%MokoWaaSBase%')) + ->where($db->quoteName('location') . ' NOT LIKE ' . $db->quote('%MokoWaaSBase%')); $db->setQuery($query); $sites = $db->loadObjectList(); From 0a3cb0ffe775d572b868efb9d224d9a01cf71768 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sun, 7 Jun 2026 01:32:51 +0000 Subject: [PATCH 43/73] chore(version): pre-release bump to 02.34.34-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- source/pkg_mokowaas.xml | 2 +- 42 files changed, 52 insertions(+), 52 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 1dc7064f..026f2bdd 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.33 + 02.34.34 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 4ee72ec9..bc716180 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.33 +# VERSION: 02.34.34 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 0199020c..fe749854 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.33 + VERSION: 02.34.34 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index dee735e4..29d02758 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.33 + VERSION: 02.34.34 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 88b0cfc6..442a3a95 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.33 + VERSION: 02.34.34 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index 5248ed6a..7290629f 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.33 + VERSION: 02.34.34 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index 8093126d..e81727fe 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.33 + VERSION: 02.34.34 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index ee9455d2..343bab09 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.33 +VERSION: 02.34.34 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index 0a199b07..716da6ba 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.33 + VERSION: 02.34.34 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.33) +# MokoWaaS Build Guide (VERSION: 02.34.34) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index 31883687..93375b12 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.33 + VERSION: 02.34.34 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.33) +# MokoWaaS Configuration Guide (VERSION: 02.34.34) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index 54fb8015..d8355933 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.33 + VERSION: 02.34.34 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.33) +# MokoWaaS Installation Guide (VERSION: 02.34.34) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index 00d0ab97..1410ea36 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.33 + VERSION: 02.34.34 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.33) +# MokoWaaS Operations Guide (VERSION: 02.34.34) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index 49609180..d99e41cf 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.33 + VERSION: 02.34.34 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.33) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.34) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index 16d743a7..989dd78a 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.33 + VERSION: 02.34.34 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.33) +# MokoWaaS Testing Guide (VERSION: 02.34.34) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index a760afb3..c4003926 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.33 + VERSION: 02.34.34 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.33) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.34) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index 7fbd843e..ec7dbb8c 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.33 + VERSION: 02.34.34 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.33) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.34) ## Introduction diff --git a/docs/index.md b/docs/index.md index cf65fb2c..8290708d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.33 + VERSION: 02.34.34 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.33) +# MokoWaaS Documentation Index (VERSION: 02.34.34) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index 36175a10..d9fd1f50 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.33 + VERSION: 02.34.34 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.33) +# MokoWaaS Plugin Overview (VERSION: 02.34.34) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index 52df598b..7cf26d62 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.33 +VERSION: 02.34.34 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index 60a3d75f..7c0e51c2 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.33-dev + 02.34.34-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index 6b880850..efdc763f 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.33-dev + 02.34.34-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index 5bc7a63f..786a3b34 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.33-dev + 02.34.34-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index d7ccefa4..2ef38baa 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.33-dev + 02.34.34-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index c1cd9edc..b9ca1377 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.33-dev + 02.34.34-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index d5d9ee4c..01f54d0a 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.33 + * VERSION: 02.34.34 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index 101c0f13..88f040db 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.33 + * VERSION: 02.34.34 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index 2b729c60..fe68b0f6 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.33-dev + 02.34.34-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index 26019c7a..5854d97f 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.33 + * VERSION: 02.34.34 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index 0c52aa81..e6cb9a7b 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.33 + * VERSION: 02.34.34 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index 7a0255d7..67605e4b 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.33-dev + 02.34.34-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index ac2233af..13311764 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.33-dev + 02.34.34-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index 8879fc17..0e55fbf6 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.33-dev + 02.34.34-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index b2ef0405..b72ff758 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.33-dev + 02.34.34-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index a274d75a..b84b877f 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.33-dev + 02.34.34-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index 1be9a7fb..10c221f4 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.33-dev + 02.34.34-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index 3505a0a9..56475d64 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.33-dev + 02.34.34-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index 2045a2e4..c82479f7 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.33 + * VERSION: 02.34.34 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 3ba536ab..350acdc3 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.33-dev + 02.34.34-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index c47acaa1..173fa572 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.33 + * VERSION: 02.34.34 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index 1dade472..e743199a 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.33 + * VERSION: 02.34.34 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index b39460af..54dca3a2 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.33-dev + 02.34.34-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index ad41c17c..be464921 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.33-dev + 02.34.34-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From 2cac30fa48f0ff654f0e08e10a6e3c022fa69de8 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 20:39:05 -0500 Subject: [PATCH 44/73] fix: fall back to manifest XML for signing_key default Hidden field defaults aren't stored in database params until the plugin is re-saved. All 3 heartbeat paths now read the signing_key default from the monitor plugin's manifest XML as a fallback. --- .../src/Controller/DisplayController.php | 20 ++++++++++++++++++ .../src/Extension/Monitor.php | 20 ++++++++++++++++++ source/script.php | 21 ++++++++++++++++++- 3 files changed, 60 insertions(+), 1 deletion(-) diff --git a/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php b/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php index a74c76b4..e80ca58e 100644 --- a/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php +++ b/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php @@ -137,6 +137,26 @@ class DisplayController extends BaseController $headers = ['Content-Type: application/json']; $signingKeyB64 = $params->get('signing_key', ''); + // Fall back to manifest XML default if not yet saved in params + if (empty($signingKeyB64)) + { + $manifestFile = JPATH_PLUGINS . '/system/mokowaas_monitor/mokowaas_monitor.xml'; + + if (is_file($manifestFile)) + { + $xml = simplexml_load_file($manifestFile); + + if ($xml) + { + foreach ($xml->xpath('//field[@name="signing_key"]') as $field) + { + $signingKeyB64 = (string) $field['default']; + break; + } + } + } + } + if (!empty($signingKeyB64)) { $privateKeyPem = base64_decode($signingKeyB64); diff --git a/source/packages/plg_system_mokowaas_monitor/src/Extension/Monitor.php b/source/packages/plg_system_mokowaas_monitor/src/Extension/Monitor.php index 8329d66f..0adb9c67 100644 --- a/source/packages/plg_system_mokowaas_monitor/src/Extension/Monitor.php +++ b/source/packages/plg_system_mokowaas_monitor/src/Extension/Monitor.php @@ -202,6 +202,26 @@ class Monitor extends CMSPlugin implements SubscriberInterface { $signingKeyB64 = $this->params->get('signing_key', ''); + // Fall back to manifest XML default if not yet saved in params + if (empty($signingKeyB64)) + { + $manifestFile = JPATH_PLUGINS . '/system/mokowaas_monitor/mokowaas_monitor.xml'; + + if (is_file($manifestFile)) + { + $xml = simplexml_load_file($manifestFile); + + if ($xml) + { + foreach ($xml->xpath('//field[@name="signing_key"]') as $field) + { + $signingKeyB64 = (string) $field['default']; + break; + } + } + } + } + if (empty($signingKeyB64)) { return null; diff --git a/source/script.php b/source/script.php index 0a29545a..9c82e316 100644 --- a/source/script.php +++ b/source/script.php @@ -833,9 +833,28 @@ class Pkg_MokowaasInstallerScript $headers = ['Content-Type: application/json']; - // RSA sign the request + // RSA sign the request — fall back to manifest XML default $signingKeyB64 = $monitorParams->signing_key ?? ''; + if (empty($signingKeyB64)) + { + $manifestFile = JPATH_PLUGINS . '/system/mokowaas_monitor/mokowaas_monitor.xml'; + + if (is_file($manifestFile)) + { + $xml = simplexml_load_file($manifestFile); + + if ($xml) + { + foreach ($xml->xpath('//field[@name="signing_key"]') as $field) + { + $signingKeyB64 = (string) $field['default']; + break; + } + } + } + } + if (!empty($signingKeyB64)) { $privateKeyPem = base64_decode($signingKeyB64); From 01d28e7b964bb0db9f00d4a627c04e1635cb7705 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sun, 7 Jun 2026 01:39:40 +0000 Subject: [PATCH 45/73] chore(version): pre-release bump to 02.34.35-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- source/pkg_mokowaas.xml | 2 +- 42 files changed, 52 insertions(+), 52 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 026f2bdd..4b865769 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.34 + 02.34.35 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index bc716180..4a93f4b8 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.34 +# VERSION: 02.34.35 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index fe749854..325d8cc7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.34 + VERSION: 02.34.35 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 29d02758..d056b56c 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.34 + VERSION: 02.34.35 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 442a3a95..1703b6be 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.34 + VERSION: 02.34.35 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index 7290629f..07df788d 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.34 + VERSION: 02.34.35 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index e81727fe..c7d058ef 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.34 + VERSION: 02.34.35 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index 343bab09..cda7cfd6 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.34 +VERSION: 02.34.35 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index 716da6ba..f1598e41 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.34 + VERSION: 02.34.35 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.34) +# MokoWaaS Build Guide (VERSION: 02.34.35) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index 93375b12..199d7194 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.34 + VERSION: 02.34.35 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.34) +# MokoWaaS Configuration Guide (VERSION: 02.34.35) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index d8355933..3fcde0e2 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.34 + VERSION: 02.34.35 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.34) +# MokoWaaS Installation Guide (VERSION: 02.34.35) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index 1410ea36..c7688e79 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.34 + VERSION: 02.34.35 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.34) +# MokoWaaS Operations Guide (VERSION: 02.34.35) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index d99e41cf..172f0205 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.34 + VERSION: 02.34.35 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.34) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.35) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index 989dd78a..a88466c9 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.34 + VERSION: 02.34.35 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.34) +# MokoWaaS Testing Guide (VERSION: 02.34.35) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index c4003926..5c45b024 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.34 + VERSION: 02.34.35 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.34) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.35) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index ec7dbb8c..0edaed40 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.34 + VERSION: 02.34.35 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.34) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.35) ## Introduction diff --git a/docs/index.md b/docs/index.md index 8290708d..c7256c0d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.34 + VERSION: 02.34.35 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.34) +# MokoWaaS Documentation Index (VERSION: 02.34.35) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index d9fd1f50..73138978 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.34 + VERSION: 02.34.35 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.34) +# MokoWaaS Plugin Overview (VERSION: 02.34.35) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index 7cf26d62..e8f67f0c 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.34 +VERSION: 02.34.35 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index 7c0e51c2..444742e7 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.34-dev + 02.34.35-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index efdc763f..aa4b552c 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.34-dev + 02.34.35-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index 786a3b34..3443f0b8 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.34-dev + 02.34.35-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index 2ef38baa..b8c57f45 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.34-dev + 02.34.35-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index b9ca1377..30bed8a3 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.34-dev + 02.34.35-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 01f54d0a..d6612cf7 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.34 + * VERSION: 02.34.35 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index 88f040db..437e31f8 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.34 + * VERSION: 02.34.35 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index fe68b0f6..c9415401 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.34-dev + 02.34.35-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index 5854d97f..e1f0b842 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.34 + * VERSION: 02.34.35 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index e6cb9a7b..610fb30c 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.34 + * VERSION: 02.34.35 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index 67605e4b..a2401747 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.34-dev + 02.34.35-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index 13311764..c4613173 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.34-dev + 02.34.35-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index 0e55fbf6..82fb98ab 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.34-dev + 02.34.35-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index b72ff758..071d5ad0 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.34-dev + 02.34.35-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index b84b877f..b30dda96 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.34-dev + 02.34.35-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index 10c221f4..510e3346 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.34-dev + 02.34.35-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index 56475d64..7ebf10bf 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.34-dev + 02.34.35-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index c82479f7..e4f70bdc 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.34 + * VERSION: 02.34.35 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 350acdc3..871d244a 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.34-dev + 02.34.35-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index 173fa572..b6a643ee 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.34 + * VERSION: 02.34.35 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index e743199a..f39764a9 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.34 + * VERSION: 02.34.35 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index 54dca3a2..61faf59f 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.34-dev + 02.34.35-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index be464921..45158896 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.34-dev + 02.34.35-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From 41b5346f53c10ac9fec98ad2294b15475ffb46b7 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 20:52:06 -0500 Subject: [PATCH 46/73] refactor: rename MokoWaaSBase references to MokoWaaSHQ Update heartbeat endpoints, menu exclusions, language strings, and all cross-references to match the MokoWaaSHQ rename. --- source/packages/com_mokowaas/admin/catalog.xml | 6 +++--- .../admin/src/Controller/DisplayController.php | 4 ++-- .../api/src/Controller/RemoteLoginController.php | 2 +- .../plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../language/en-GB/plg_system_mokowaas_monitor.ini | 10 +++++----- .../src/Extension/Monitor.php | 10 +++++----- source/script.php | 10 +++++----- 7 files changed, 22 insertions(+), 22 deletions(-) diff --git a/source/packages/com_mokowaas/admin/catalog.xml b/source/packages/com_mokowaas/admin/catalog.xml index d0ff139d..e863819f 100644 --- a/source/packages/com_mokowaas/admin/catalog.xml +++ b/source/packages/com_mokowaas/admin/catalog.xml @@ -20,14 +20,14 @@ https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/raw/branch/dev/updates.xml - MokoWaaSBase - pkg_mokowaasbase + MokoWaaSHQ + pkg_mokowaashq package Centralized control panel for managing all MokoWaaS client installations. icon-tachometer-alt Platform
https://mokoconsulting.tech/support/products/mokowaas-base
- https://git.mokoconsulting.tech/MokoConsulting/MokoWaaSBase/raw/branch/dev/updates.xml + https://git.mokoconsulting.tech/MokoConsulting/MokoWaaSHQ/raw/branch/dev/updates.xml
MokoOnyx diff --git a/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php b/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php index e80ca58e..928c7fbb 100644 --- a/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php +++ b/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php @@ -103,7 +103,7 @@ class DisplayController extends BaseController if (empty($baseUrl)) { - $this->jsonResponse(['success' => false, 'message' => 'MokoWaaSBase URL not configured in monitor plugin.']); + $this->jsonResponse(['success' => false, 'message' => 'MokoWaaSHQ URL not configured in monitor plugin.']); return; } @@ -175,7 +175,7 @@ class DisplayController extends BaseController } } - $endpoint = $baseUrl . '/api/index.php/v1/mokowaasbase/heartbeat'; + $endpoint = $baseUrl . '/api/index.php/v1/mokowaashq/heartbeat'; $ch = curl_init($endpoint); curl_setopt_array($ch, [ diff --git a/source/packages/com_mokowaas/api/src/Controller/RemoteLoginController.php b/source/packages/com_mokowaas/api/src/Controller/RemoteLoginController.php index b15e4353..ff93da3a 100644 --- a/source/packages/com_mokowaas/api/src/Controller/RemoteLoginController.php +++ b/source/packages/com_mokowaas/api/src/Controller/RemoteLoginController.php @@ -20,7 +20,7 @@ use Joomla\Registry\Registry; * Remote login API controller. * * POST /api/index.php/v1/mokowaas/remote-login - * Body: {"token": "health_api_token", "user": "requesting_username", "origin": "MokoWaaSBase"} + * Body: {"token": "health_api_token", "user": "requesting_username", "origin": "MokoWaaSHQ"} * * Validates the health API token, generates a one-time login token * for the master user, and returns a URL that auto-authenticates. diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 01f54d0a..88237c52 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -2131,7 +2131,7 @@ class MokoWaaS extends CMSPlugin implements BootableExtensionInterface // ------------------------------------------------------------------ /** - * Handle one-time login tokens from MokoWaaSBase remote login. + * Handle one-time login tokens from MokoWaaSHQ remote login. * * Checks for ?mokowaas_otl=TOKEN in the admin URL, validates the * token against the stored OTL file, auto-logs in the master user, diff --git a/source/packages/plg_system_mokowaas_monitor/language/en-GB/plg_system_mokowaas_monitor.ini b/source/packages/plg_system_mokowaas_monitor/language/en-GB/plg_system_mokowaas_monitor.ini index 9be4380c..b45c08d0 100644 --- a/source/packages/plg_system_mokowaas_monitor/language/en-GB/plg_system_mokowaas_monitor.ini +++ b/source/packages/plg_system_mokowaas_monitor/language/en-GB/plg_system_mokowaas_monitor.ini @@ -3,11 +3,11 @@ ; License: GPL-3.0-or-later PLG_SYSTEM_MOKOWAAS_MONITOR="System - MokoWaaS Monitor" -PLG_SYSTEM_MOKOWAAS_MONITOR_DESC="Sends heartbeat data to a MokoWaaSBase control panel for centralized site monitoring." +PLG_SYSTEM_MOKOWAAS_MONITOR_DESC="Sends heartbeat data to a MokoWaaSHQ control panel for centralized site monitoring." PLG_SYSTEM_MOKOWAAS_MONITOR_FIELDSET_BASIC="Monitoring" -PLG_SYSTEM_MOKOWAAS_MONITOR_FIELDSET_BASIC_DESC="Configure heartbeat reporting to MokoWaaSBase." +PLG_SYSTEM_MOKOWAAS_MONITOR_FIELDSET_BASIC_DESC="Configure heartbeat reporting to MokoWaaSHQ." PLG_SYSTEM_MOKOWAAS_MONITOR_HEARTBEAT_LABEL="Send Heartbeat" -PLG_SYSTEM_MOKOWAAS_MONITOR_HEARTBEAT_DESC="Send heartbeat data to MokoWaaSBase when plugin settings are saved." -PLG_SYSTEM_MOKOWAAS_MONITOR_BASE_URL_LABEL="MokoWaaSBase URL" -PLG_SYSTEM_MOKOWAAS_MONITOR_BASE_URL_DESC="URL of the MokoWaaSBase control panel (e.g. https://mokoconsulting.tech). The heartbeat is sent to /api/index.php/v1/mokowaasbase/heartbeat on this host." +PLG_SYSTEM_MOKOWAAS_MONITOR_HEARTBEAT_DESC="Send heartbeat data to MokoWaaSHQ when plugin settings are saved." +PLG_SYSTEM_MOKOWAAS_MONITOR_BASE_URL_LABEL="MokoWaaSHQ URL" +PLG_SYSTEM_MOKOWAAS_MONITOR_BASE_URL_DESC="URL of the MokoWaaSHQ control panel (e.g. https://mokoconsulting.tech). The heartbeat is sent to /api/index.php/v1/mokowaashq/heartbeat on this host." diff --git a/source/packages/plg_system_mokowaas_monitor/src/Extension/Monitor.php b/source/packages/plg_system_mokowaas_monitor/src/Extension/Monitor.php index 0adb9c67..a4f61dac 100644 --- a/source/packages/plg_system_mokowaas_monitor/src/Extension/Monitor.php +++ b/source/packages/plg_system_mokowaas_monitor/src/Extension/Monitor.php @@ -21,7 +21,7 @@ use Moko\Plugin\System\MokoWaaS\Helper\MokoWaaSHelper; /** * MokoWaaS Health Monitor Plugin * - * Sends heartbeat data to a MokoWaaSBase control panel instance. + * Sends heartbeat data to a MokoWaaSHQ control panel instance. * Each request is RSA-signed with a private key distributed via * the package manifest, verified by Base using the matching public key. * @@ -76,7 +76,7 @@ class Monitor extends CMSPlugin implements SubscriberInterface } /** - * Send heartbeat to the MokoWaaSBase control panel. + * Send heartbeat to the MokoWaaSHQ control panel. * * The request is RSA-signed: the client signs domain|timestamp|token * with its private key. Base verifies with the matching public key. @@ -143,7 +143,7 @@ class Monitor extends CMSPlugin implements SubscriberInterface $headers[] = 'X-MokoWaaS-Timestamp: ' . $timestamp; } - $endpoint = $baseUrl . '/api/index.php/v1/mokowaasbase/heartbeat'; + $endpoint = $baseUrl . '/api/index.php/v1/mokowaashq/heartbeat'; $json = json_encode($payload, JSON_UNESCAPED_SLASHES); $ch = curl_init($endpoint); @@ -170,7 +170,7 @@ class Monitor extends CMSPlugin implements SubscriberInterface { $body = json_decode($response, true); $app->enqueueMessage( - 'MokoWaaSBase heartbeat: ' . ($body['status'] ?? 'ok'), + 'MokoWaaSHQ heartbeat: ' . ($body['status'] ?? 'ok'), 'message' ); } @@ -183,7 +183,7 @@ class Monitor extends CMSPlugin implements SubscriberInterface 'mokowaas' ); $app->enqueueMessage( - 'MokoWaaSBase heartbeat failed (HTTP ' . $code . ')', + 'MokoWaaSHQ heartbeat failed (HTTP ' . $code . ')', 'warning' ); } diff --git a/source/script.php b/source/script.php index 9c82e316..0f4ee725 100644 --- a/source/script.php +++ b/source/script.php @@ -595,14 +595,14 @@ class Pkg_MokowaasInstallerScript $db = Factory::getDbo(); $dynamicUrl = 'https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/updates.xml'; - // Find MokoWaaS update sites (exclude MokoWaaSBase and other Moko extensions) + // Find MokoWaaS update sites (exclude MokoWaaSHQ and other Moko extensions) $query = $db->getQuery(true) ->select($db->quoteName(['update_site_id', 'location'])) ->from($db->quoteName('#__update_sites')) ->where('(' . $db->quoteName('name') . ' LIKE ' . $db->quote('%MokoWaaS%') . ' OR ' . $db->quoteName('location') . ' LIKE ' . $db->quote('%MokoWaaS%') . ')') - ->where($db->quoteName('name') . ' NOT LIKE ' . $db->quote('%MokoWaaSBase%')) - ->where($db->quoteName('location') . ' NOT LIKE ' . $db->quote('%MokoWaaSBase%')); + ->where($db->quoteName('name') . ' NOT LIKE ' . $db->quote('%MokoWaaSHQ%')) + ->where($db->quoteName('location') . ' NOT LIKE ' . $db->quote('%MokoWaaSHQ%')); $db->setQuery($query); $sites = $db->loadObjectList(); @@ -873,7 +873,7 @@ class Pkg_MokowaasInstallerScript } } - $endpoint = $baseUrl . '/api/index.php/v1/mokowaasbase/heartbeat'; + $endpoint = $baseUrl . '/api/index.php/v1/mokowaashq/heartbeat'; $ch = curl_init($endpoint); curl_setopt_array($ch, [ @@ -892,7 +892,7 @@ class Pkg_MokowaasInstallerScript if ($code >= 200 && $code < 300) { - Factory::getApplication()->enqueueMessage('MokoWaaSBase heartbeat: site registered', 'message'); + Factory::getApplication()->enqueueMessage('MokoWaaSHQ heartbeat: site registered', 'message'); } } catch (\Throwable $e) From ad2aad900ea1bf26ec7478d7f7500704e83f622f Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sun, 7 Jun 2026 01:54:56 +0000 Subject: [PATCH 47/73] chore(version): pre-release bump to 02.34.36-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- source/pkg_mokowaas.xml | 2 +- 42 files changed, 52 insertions(+), 52 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 4b865769..a38d4f3b 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.35 + 02.34.36 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 4a93f4b8..825e0688 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.35 +# VERSION: 02.34.36 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 325d8cc7..805a06b4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.35 + VERSION: 02.34.36 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index d056b56c..8a662572 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.35 + VERSION: 02.34.36 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 1703b6be..af7596ed 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.35 + VERSION: 02.34.36 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index 07df788d..130fb931 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.35 + VERSION: 02.34.36 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index c7d058ef..37213a7e 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.35 + VERSION: 02.34.36 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index cda7cfd6..63e93aa7 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.35 +VERSION: 02.34.36 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index f1598e41..0950a84b 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.35 + VERSION: 02.34.36 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.35) +# MokoWaaS Build Guide (VERSION: 02.34.36) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index 199d7194..1fbd9475 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.35 + VERSION: 02.34.36 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.35) +# MokoWaaS Configuration Guide (VERSION: 02.34.36) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index 3fcde0e2..c7615c66 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.35 + VERSION: 02.34.36 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.35) +# MokoWaaS Installation Guide (VERSION: 02.34.36) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index c7688e79..cfef983e 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.35 + VERSION: 02.34.36 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.35) +# MokoWaaS Operations Guide (VERSION: 02.34.36) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index 172f0205..bdf24c47 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.35 + VERSION: 02.34.36 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.35) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.36) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index a88466c9..ac9a22ea 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.35 + VERSION: 02.34.36 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.35) +# MokoWaaS Testing Guide (VERSION: 02.34.36) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index 5c45b024..c257976f 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.35 + VERSION: 02.34.36 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.35) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.36) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index 0edaed40..2729dd7c 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.35 + VERSION: 02.34.36 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.35) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.36) ## Introduction diff --git a/docs/index.md b/docs/index.md index c7256c0d..758f0686 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.35 + VERSION: 02.34.36 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.35) +# MokoWaaS Documentation Index (VERSION: 02.34.36) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index 73138978..831d5176 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.35 + VERSION: 02.34.36 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.35) +# MokoWaaS Plugin Overview (VERSION: 02.34.36) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index e8f67f0c..caad8f22 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.35 +VERSION: 02.34.36 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index 444742e7..bf0236ac 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.35-dev + 02.34.36-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index aa4b552c..796cb601 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.35-dev + 02.34.36-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index 3443f0b8..d7176e62 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.35-dev + 02.34.36-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index b8c57f45..b6773c8e 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.35-dev + 02.34.36-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index 30bed8a3..db525957 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.35-dev + 02.34.36-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 918f0854..d67a1b18 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.35 + * VERSION: 02.34.36 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index 437e31f8..0699138e 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.35 + * VERSION: 02.34.36 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index c9415401..3bd1d1ea 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.35-dev + 02.34.36-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index e1f0b842..2811669e 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.35 + * VERSION: 02.34.36 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index 610fb30c..04baa62e 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.35 + * VERSION: 02.34.36 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index a2401747..a658d880 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.35-dev + 02.34.36-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index c4613173..60d7c255 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.35-dev + 02.34.36-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index 82fb98ab..523cad15 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.35-dev + 02.34.36-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index 071d5ad0..f398ea85 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.35-dev + 02.34.36-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index b30dda96..00488b5c 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.35-dev + 02.34.36-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index 510e3346..ac7dbaeb 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.35-dev + 02.34.36-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index 7ebf10bf..d6f712eb 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.35-dev + 02.34.36-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index e4f70bdc..753ca241 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.35 + * VERSION: 02.34.36 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 871d244a..ebecf2f4 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.35-dev + 02.34.36-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index b6a643ee..74922029 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.35 + * VERSION: 02.34.36 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index f39764a9..773131fa 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.35 + * VERSION: 02.34.36 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index 61faf59f..baf987cd 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.35-dev + 02.34.36-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index 45158896..3b64b2cb 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.35-dev + 02.34.36-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From 88266587e46a4a0817347ed24a85afe9ed38417f Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 21:11:47 -0500 Subject: [PATCH 48/73] docs: rename MokoWaaSBase to MokoWaaSHQ in changelog --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 325d8cc7..0334d3d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,7 +23,7 @@ ## [Unreleased] ### Added -- RSA-signed heartbeat authentication — private key in monitor plugin manifest, public key on MokoWaaSBase +- RSA-signed heartbeat authentication — private key in monitor plugin manifest, public key on MokoWaaSHQ - Monitor plugin base_url set via manifest (hidden from admin UI), propagated via update server - Send Heartbeat button on health token field for manual heartbeat testing @@ -39,14 +39,14 @@ - Core plugin stripped to heartbeat-only config (~5,500 lines removed) - Extension catalog (catalog.xml) with update server discovery (#186) - Download key preservation across Joomla updates (#187) -- Remote login endpoint for MokoWaaSBase auto-login +- Remote login endpoint for MokoWaaSHQ auto-login - Provision reset API for new client setup (hits, versions, tokens) - Setup required banner after provision reset - Support verification PIN (MOKO-XXXX-XXXX) - mod_mokowaas_categories — auto-category tree menu (#184) - Cache/temp split button in status bar - Dashboard version tiles for component and modules -- Monitor plugin sends full health payload to MokoWaaSBase +- Monitor plugin sends full health payload to MokoWaaSHQ - Firewall: block_frontend_superuser, own trusted_ip_entry.xml - DevTools: reset download keys toggle From f287fccf4d364fe12aac70b39d43fe27a006b055 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sun, 7 Jun 2026 02:13:20 +0000 Subject: [PATCH 49/73] chore(version): pre-release bump to 02.34.37-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- source/pkg_mokowaas.xml | 2 +- 42 files changed, 52 insertions(+), 52 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index a38d4f3b..256c5c09 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.36 + 02.34.37 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 825e0688..72636a46 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.36 +# VERSION: 02.34.37 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 68ad017d..e1b9d754 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.36 + VERSION: 02.34.37 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 8a662572..5e8cbea4 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.36 + VERSION: 02.34.37 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index af7596ed..b76dc048 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.36 + VERSION: 02.34.37 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index 130fb931..d17ad08c 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.36 + VERSION: 02.34.37 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index 37213a7e..479eaadb 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.36 + VERSION: 02.34.37 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index 63e93aa7..6137cac6 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.36 +VERSION: 02.34.37 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index 0950a84b..dcacc9c9 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.36 + VERSION: 02.34.37 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.36) +# MokoWaaS Build Guide (VERSION: 02.34.37) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index 1fbd9475..8294bf0d 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.36 + VERSION: 02.34.37 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.36) +# MokoWaaS Configuration Guide (VERSION: 02.34.37) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index c7615c66..5b7c4a31 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.36 + VERSION: 02.34.37 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.36) +# MokoWaaS Installation Guide (VERSION: 02.34.37) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index cfef983e..830ec781 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.36 + VERSION: 02.34.37 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.36) +# MokoWaaS Operations Guide (VERSION: 02.34.37) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index bdf24c47..b61c6f02 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.36 + VERSION: 02.34.37 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.36) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.37) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index ac9a22ea..ab196da7 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.36 + VERSION: 02.34.37 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.36) +# MokoWaaS Testing Guide (VERSION: 02.34.37) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index c257976f..3ae67551 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.36 + VERSION: 02.34.37 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.36) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.37) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index 2729dd7c..ace99619 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.36 + VERSION: 02.34.37 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.36) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.37) ## Introduction diff --git a/docs/index.md b/docs/index.md index 758f0686..5d410e86 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.36 + VERSION: 02.34.37 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.36) +# MokoWaaS Documentation Index (VERSION: 02.34.37) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index 831d5176..cd983ee3 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.36 + VERSION: 02.34.37 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.36) +# MokoWaaS Plugin Overview (VERSION: 02.34.37) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index caad8f22..ac03d160 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.36 +VERSION: 02.34.37 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index bf0236ac..507bdeea 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.36-dev + 02.34.37-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index 796cb601..8cd027e7 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.36-dev + 02.34.37-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index d7176e62..2e89b2f3 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.36-dev + 02.34.37-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index b6773c8e..03bd8455 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.36-dev + 02.34.37-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index db525957..1491cb8f 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.36-dev + 02.34.37-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index d67a1b18..eaae30ed 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.36 + * VERSION: 02.34.37 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index 0699138e..85e01ab3 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.36 + * VERSION: 02.34.37 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index 3bd1d1ea..9982e206 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.36-dev + 02.34.37-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index 2811669e..bc0f6cd6 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.36 + * VERSION: 02.34.37 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index 04baa62e..852fc5eb 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.36 + * VERSION: 02.34.37 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index a658d880..bb1f30a5 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.36-dev + 02.34.37-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index 60d7c255..3fc273ff 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.36-dev + 02.34.37-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index 523cad15..315d0ed5 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.36-dev + 02.34.37-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index f398ea85..94bc7834 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.36-dev + 02.34.37-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index 00488b5c..626b1788 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.36-dev + 02.34.37-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index ac7dbaeb..8d0cdf5e 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.36-dev + 02.34.37-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index d6f712eb..68f678c8 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.36-dev + 02.34.37-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index 753ca241..4365247e 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.36 + * VERSION: 02.34.37 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index ebecf2f4..5e1a3ffb 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.36-dev + 02.34.37-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index 74922029..da712a2e 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.36 + * VERSION: 02.34.37 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index 773131fa..62e77da9 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.36 + * VERSION: 02.34.37 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index baf987cd..1ffb9cfb 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.36-dev + 02.34.37-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index 3b64b2cb..47ecf0c6 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.36-dev + 02.34.37-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From 3d541bcb249d18581c8074032757975f75acdfe4 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sun, 7 Jun 2026 03:01:35 +0000 Subject: [PATCH 50/73] chore(version): pre-release bump to 02.34.38-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- source/pkg_mokowaas.xml | 2 +- 42 files changed, 52 insertions(+), 52 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 256c5c09..41b9a7f7 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.37 + 02.34.38 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 72636a46..f56fa4c4 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.37 +# VERSION: 02.34.38 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index e1b9d754..d1dad8d8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.37 + VERSION: 02.34.38 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 5e8cbea4..c2045627 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.37 + VERSION: 02.34.38 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index b76dc048..8d19824b 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.37 + VERSION: 02.34.38 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index d17ad08c..3eec9fce 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.37 + VERSION: 02.34.38 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index 479eaadb..49ead774 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.37 + VERSION: 02.34.38 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index 6137cac6..3a2adc5d 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.37 +VERSION: 02.34.38 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index dcacc9c9..ece3c03a 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.37 + VERSION: 02.34.38 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.37) +# MokoWaaS Build Guide (VERSION: 02.34.38) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index 8294bf0d..f753c173 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.37 + VERSION: 02.34.38 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.37) +# MokoWaaS Configuration Guide (VERSION: 02.34.38) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index 5b7c4a31..e83a1d29 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.37 + VERSION: 02.34.38 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.37) +# MokoWaaS Installation Guide (VERSION: 02.34.38) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index 830ec781..b5e16f9f 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.37 + VERSION: 02.34.38 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.37) +# MokoWaaS Operations Guide (VERSION: 02.34.38) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index b61c6f02..ff07fa14 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.37 + VERSION: 02.34.38 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.37) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.38) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index ab196da7..95e64136 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.37 + VERSION: 02.34.38 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.37) +# MokoWaaS Testing Guide (VERSION: 02.34.38) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index 3ae67551..b0d42000 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.37 + VERSION: 02.34.38 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.37) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.38) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index ace99619..73d7c66c 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.37 + VERSION: 02.34.38 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.37) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.38) ## Introduction diff --git a/docs/index.md b/docs/index.md index 5d410e86..5fea0d7d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.37 + VERSION: 02.34.38 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.37) +# MokoWaaS Documentation Index (VERSION: 02.34.38) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index cd983ee3..f8b833d2 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.37 + VERSION: 02.34.38 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.37) +# MokoWaaS Plugin Overview (VERSION: 02.34.38) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index ac03d160..a9400bdb 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.37 +VERSION: 02.34.38 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index 507bdeea..fcffe6e0 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.37-dev + 02.34.38-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index 8cd027e7..1e58201d 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.37-dev + 02.34.38-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index 2e89b2f3..ba6cd45e 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.37-dev + 02.34.38-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index 03bd8455..fb92e25e 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.37-dev + 02.34.38-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index 1491cb8f..987c2f0a 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.37-dev + 02.34.38-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index eaae30ed..25ce3e22 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.37 + * VERSION: 02.34.38 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index 85e01ab3..ffc4db78 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.37 + * VERSION: 02.34.38 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index 9982e206..01ad966c 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.37-dev + 02.34.38-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index bc0f6cd6..e4c4e66e 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.37 + * VERSION: 02.34.38 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index 852fc5eb..6655534e 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.37 + * VERSION: 02.34.38 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index bb1f30a5..d335150f 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.37-dev + 02.34.38-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index 3fc273ff..d4a97e66 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.37-dev + 02.34.38-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index 315d0ed5..5b3e37aa 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.37-dev + 02.34.38-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index 94bc7834..1e5a7b41 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.37-dev + 02.34.38-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index 626b1788..c522b334 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.37-dev + 02.34.38-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index 8d0cdf5e..6572aa7c 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.37-dev + 02.34.38-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index 68f678c8..393b7205 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.37-dev + 02.34.38-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index 4365247e..ec0e9043 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.37 + * VERSION: 02.34.38 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 5e1a3ffb..3f8c1270 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.37-dev + 02.34.38-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index da712a2e..3e96223a 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.37 + * VERSION: 02.34.38 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index 62e77da9..7f6211a5 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.37 + * VERSION: 02.34.38 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index 1ffb9cfb..9d98ea55 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.37-dev + 02.34.38-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index 47ecf0c6..07879d1f 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.37-dev + 02.34.38-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From c610ad6828434e79c292bf1bd0c455c9026c202d Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sun, 7 Jun 2026 03:06:19 +0000 Subject: [PATCH 51/73] chore(version): pre-release bump to 02.34.39-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- source/pkg_mokowaas.xml | 2 +- 42 files changed, 52 insertions(+), 52 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 41b9a7f7..d47b6dda 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.38 + 02.34.39 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index f56fa4c4..9a58f4e5 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.38 +# VERSION: 02.34.39 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index d1dad8d8..1a1db081 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.38 + VERSION: 02.34.39 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index c2045627..7dfde667 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.38 + VERSION: 02.34.39 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 8d19824b..7d60fe2e 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.38 + VERSION: 02.34.39 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index 3eec9fce..4e5e864b 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.38 + VERSION: 02.34.39 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index 49ead774..47be4954 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.38 + VERSION: 02.34.39 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index 3a2adc5d..2f38baef 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.38 +VERSION: 02.34.39 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index ece3c03a..0331ae46 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.38 + VERSION: 02.34.39 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.38) +# MokoWaaS Build Guide (VERSION: 02.34.39) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index f753c173..9a288736 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.38 + VERSION: 02.34.39 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.38) +# MokoWaaS Configuration Guide (VERSION: 02.34.39) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index e83a1d29..6e1f4c4c 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.38 + VERSION: 02.34.39 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.38) +# MokoWaaS Installation Guide (VERSION: 02.34.39) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index b5e16f9f..13b2b06d 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.38 + VERSION: 02.34.39 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.38) +# MokoWaaS Operations Guide (VERSION: 02.34.39) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index ff07fa14..b1fc22f8 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.38 + VERSION: 02.34.39 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.38) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.39) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index 95e64136..c29810a8 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.38 + VERSION: 02.34.39 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.38) +# MokoWaaS Testing Guide (VERSION: 02.34.39) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index b0d42000..b03465a8 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.38 + VERSION: 02.34.39 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.38) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.39) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index 73d7c66c..882a7d1b 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.38 + VERSION: 02.34.39 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.38) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.39) ## Introduction diff --git a/docs/index.md b/docs/index.md index 5fea0d7d..d29938d4 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.38 + VERSION: 02.34.39 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.38) +# MokoWaaS Documentation Index (VERSION: 02.34.39) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index f8b833d2..8166a732 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.38 + VERSION: 02.34.39 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.38) +# MokoWaaS Plugin Overview (VERSION: 02.34.39) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index a9400bdb..f7cf0594 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.38 +VERSION: 02.34.39 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index fcffe6e0..536349be 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.38-dev + 02.34.39-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index 1e58201d..681a1cda 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.38-dev + 02.34.39-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index ba6cd45e..f685d75d 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.38-dev + 02.34.39-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index fb92e25e..5d543ae2 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.38-dev + 02.34.39-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index 987c2f0a..8245407a 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.38-dev + 02.34.39-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 25ce3e22..d225661c 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.38 + * VERSION: 02.34.39 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index ffc4db78..7657339f 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.38 + * VERSION: 02.34.39 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index 01ad966c..5d89d049 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.38-dev + 02.34.39-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index e4c4e66e..2bab0f42 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.38 + * VERSION: 02.34.39 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index 6655534e..e99e7400 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.38 + * VERSION: 02.34.39 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index d335150f..292e3c08 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.38-dev + 02.34.39-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index d4a97e66..566e3a9c 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.38-dev + 02.34.39-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index 5b3e37aa..a8375ef0 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.38-dev + 02.34.39-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index 1e5a7b41..fea724e3 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.38-dev + 02.34.39-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index c522b334..1d5cdc65 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.38-dev + 02.34.39-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index 6572aa7c..f3422728 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.38-dev + 02.34.39-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index 393b7205..dee9ba31 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.38-dev + 02.34.39-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index ec0e9043..16e4887d 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.38 + * VERSION: 02.34.39 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 3f8c1270..a7aa3ab1 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.38-dev + 02.34.39-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index 3e96223a..4d4e96cb 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.38 + * VERSION: 02.34.39 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index 7f6211a5..3e7349bb 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.38 + * VERSION: 02.34.39 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index 9d98ea55..7237568e 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.38-dev + 02.34.39-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index 07879d1f..fffc1e72 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.38-dev + 02.34.39-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From 46266b28c5a81e354fb3c4b86268b3981c5fd861 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sun, 7 Jun 2026 03:19:45 +0000 Subject: [PATCH 52/73] chore(version): pre-release bump to 02.34.40-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- source/pkg_mokowaas.xml | 2 +- 42 files changed, 52 insertions(+), 52 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index d47b6dda..de8c5cce 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.39 + 02.34.40 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 9a58f4e5..c42d4494 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.39 +# VERSION: 02.34.40 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a1db081..69127691 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.39 + VERSION: 02.34.40 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 7dfde667..2c372f40 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.39 + VERSION: 02.34.40 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 7d60fe2e..c1d694c9 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.39 + VERSION: 02.34.40 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index 4e5e864b..465fc817 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.39 + VERSION: 02.34.40 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index 47be4954..6670b73d 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.39 + VERSION: 02.34.40 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index 2f38baef..4092acf8 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.39 +VERSION: 02.34.40 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index 0331ae46..0f584233 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.39 + VERSION: 02.34.40 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.39) +# MokoWaaS Build Guide (VERSION: 02.34.40) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index 9a288736..245946ba 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.39 + VERSION: 02.34.40 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.39) +# MokoWaaS Configuration Guide (VERSION: 02.34.40) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index 6e1f4c4c..b696add8 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.39 + VERSION: 02.34.40 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.39) +# MokoWaaS Installation Guide (VERSION: 02.34.40) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index 13b2b06d..5d3d0aa4 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.39 + VERSION: 02.34.40 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.39) +# MokoWaaS Operations Guide (VERSION: 02.34.40) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index b1fc22f8..bb4da7a6 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.39 + VERSION: 02.34.40 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.39) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.40) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index c29810a8..30d73a56 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.39 + VERSION: 02.34.40 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.39) +# MokoWaaS Testing Guide (VERSION: 02.34.40) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index b03465a8..9f9a53cb 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.39 + VERSION: 02.34.40 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.39) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.40) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index 882a7d1b..510754fb 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.39 + VERSION: 02.34.40 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.39) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.40) ## Introduction diff --git a/docs/index.md b/docs/index.md index d29938d4..03eab317 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.39 + VERSION: 02.34.40 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.39) +# MokoWaaS Documentation Index (VERSION: 02.34.40) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index 8166a732..ed875123 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.39 + VERSION: 02.34.40 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.39) +# MokoWaaS Plugin Overview (VERSION: 02.34.40) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index f7cf0594..bc6a5e71 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.39 +VERSION: 02.34.40 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index 536349be..baf98eb7 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.39-dev + 02.34.40-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index 681a1cda..77b48169 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.39-dev + 02.34.40-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index f685d75d..44844c22 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.39-dev + 02.34.40-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index 5d543ae2..6203fe5b 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.39-dev + 02.34.40-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index 8245407a..b89d771f 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.39-dev + 02.34.40-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index d225661c..32f31b0b 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.39 + * VERSION: 02.34.40 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index 7657339f..0269348c 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.39 + * VERSION: 02.34.40 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index 5d89d049..9198868a 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.39-dev + 02.34.40-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index 2bab0f42..677a8abe 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.39 + * VERSION: 02.34.40 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index e99e7400..4e68f9e6 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.39 + * VERSION: 02.34.40 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index 292e3c08..58ef737a 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.39-dev + 02.34.40-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index 566e3a9c..0e75565f 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.39-dev + 02.34.40-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index a8375ef0..862090a3 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.39-dev + 02.34.40-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index fea724e3..7664b606 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.39-dev + 02.34.40-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index 1d5cdc65..ce82f37e 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.39-dev + 02.34.40-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index f3422728..35c24f30 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.39-dev + 02.34.40-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index dee9ba31..f983dde6 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.39-dev + 02.34.40-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index 16e4887d..94c13b72 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.39 + * VERSION: 02.34.40 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index a7aa3ab1..01f31b9f 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.39-dev + 02.34.40-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index 4d4e96cb..ebc12542 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.39 + * VERSION: 02.34.40 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index 3e7349bb..a1c10287 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.39 + * VERSION: 02.34.40 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index 7237568e..71ef3398 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.39-dev + 02.34.40-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index fffc1e72..b04c0347 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.39-dev + 02.34.40-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From 47f3d3651782c70883982acef2ca26c75d427dbb Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 22:20:05 -0500 Subject: [PATCH 53/73] fix: gitignore site/ should be /site/ to avoid matching tmpl/site/ --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 2a61bd13..53539f77 100644 --- a/.gitignore +++ b/.gitignore @@ -121,7 +121,7 @@ releases/ build/ dist/ out/ -site/ +/site/ !source/packages/*/site/ *.map *.css.map From 7f01e650b92ff42963d27a6cb904205f2464a9c6 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 22:27:53 -0500 Subject: [PATCH 54/73] refactor: remove Grafana heartbeat provisioning, replaced by MokoWaaSHQ Removes handleGrafanaProvisioning(), sendHeartbeat() from core plugin, and Grafana heartbeat from core plugin install script. MokoWaaSHQ monitor plugin now handles all heartbeat communication. Updates language strings to reference MokoWaaSHQ instead of Grafana. --- .../Extension/MokoWaaS.php | 132 ------------------ .../language/en-GB/plg_system_mokowaas.ini | 6 +- .../language/en-US/plg_system_mokowaas.ini | 6 +- .../packages/plg_system_mokowaas/script.php | 53 ------- .../en-GB/plg_system_mokowaas_monitor.sys.ini | 2 +- 5 files changed, 7 insertions(+), 192 deletions(-) diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index d67a1b18..c2dd306f 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -47,13 +47,6 @@ use Psr\Container\ContainerInterface; */ class MokoWaaS extends CMSPlugin implements BootableExtensionInterface { - /** - * Obfuscated Grafana URL (XOR + base64). - * - * @var string - * @since 02.01.26 - */ - private const HEARTBEAT_URL = 'https://bench.mokoconsulting.tech/api/waas-heartbeat'; /** * Obfuscated master usernames (XOR 0x5A + base64). @@ -75,8 +68,6 @@ class MokoWaaS extends CMSPlugin implements BootableExtensionInterface * @var string * @since 02.01.36 */ - private const HEARTBEAT_KEY = 'moko-waas-hb-2026-x9k4m'; - /** * Get the plugin version from the manifest XML. * @@ -239,8 +230,6 @@ class MokoWaaS extends CMSPlugin implements BootableExtensionInterface } } - // Grafana auto-provisioning - $this->handleGrafanaProvisioning($params, $app); // Clear setup-required flag on save (new client setup complete) $flagFile = JPATH_ADMINISTRATOR . '/cache/mokowaas_setup_required.flag'; @@ -1870,127 +1859,6 @@ class MokoWaaS extends CMSPlugin implements BootableExtensionInterface // ------------------------------------------------------------------ /** - * Send heartbeat to the MokoWaaS monitoring receiver. - * - * Registers this site's primary domain with the Grafana provisioning system. - * The receiver writes a datasource YAML file and restarts Grafana. - * Alias domains are not registered to avoid duplicate datasource UIDs. - * - * @param \Joomla\Registry\Registry $params Plugin params - * @param \Joomla\CMS\Application\CMSApplication $app Application - * - * @return void - * - * @since 02.01.36 - */ - protected function handleGrafanaProvisioning($params, $app) - { - $healthToken = $params->get('health_api_token', ''); - - if (empty($healthToken)) - { - return; - } - - $siteUrl = rtrim(Uri::root(), '/'); - $siteName = Factory::getConfig()->get('sitename', 'Joomla'); - - // Register primary domain - $this->sendHeartbeat($siteUrl, $siteName, $healthToken, $app); - - // Register alias domains (subform format) - $aliases = $params->get('site_aliases', ''); - - if (!empty($aliases)) - { - if (is_string($aliases)) - { - $aliases = json_decode($aliases); - } - - if (is_object($aliases)) - { - $aliases = (array) $aliases; - } - - if (is_array($aliases)) - { - foreach ($aliases as $alias) - { - $alias = (object) $alias; - - if (!empty($alias->domain)) - { - $domain = rtrim(trim($alias->domain), '/'); - $aliasUrl = 'https://' . preg_replace('#^https?://#i', '', $domain); - $this->sendHeartbeat($aliasUrl, $siteName, $healthToken, $app); - } - } - } - } - } - - /** - * Send a single heartbeat registration to the receiver. - * - * @param string $siteUrl Site URL to register - * @param string $siteName Display name for Grafana - * @param string $healthToken Health API bearer token - * @param object $app Application for messages - * - * @return void - * - * @since 02.01.39 - */ - protected function sendHeartbeat($siteUrl, $siteName, $healthToken, $app) - { - $payload = json_encode([ - 'site_url' => $siteUrl, - 'site_name' => $siteName, - 'health_token' => $healthToken, - 'action' => 'register', - ], JSON_UNESCAPED_SLASHES); - - $ch = curl_init(self::HEARTBEAT_URL . '/register'); - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_HTTPHEADER, [ - 'Content-Type: application/json', - 'X-MokoWaaS-Key: ' . self::HEARTBEAT_KEY, - ]); - curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_TIMEOUT, 15); - curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - - $response = curl_exec($ch); - $code = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE); - $error = curl_error($ch); - curl_close($ch); - - $body = json_decode($response, true); - - if ($error) - { - $app->enqueueMessage('Grafana heartbeat failed (' . $siteUrl . '): ' . $error, 'warning'); - Log::add('Heartbeat failed: ' . $error, Log::WARNING, 'mokowaas'); - } - elseif ($code === 200) - { - $status = $body['status'] ?? 'ok'; - $app->enqueueMessage( - 'Grafana heartbeat: ' . $siteUrl . ' ' . $status . ' (' . ($body['ds_uid'] ?? '') . ')', - 'message' - ); - } - else - { - $msg = sprintf('Grafana heartbeat failed (%s): HTTP %d — %s', - $siteUrl, $code, $body['error'] ?? $body['message'] ?? 'Unknown'); - $app->enqueueMessage($msg, 'warning'); - Log::add($msg, Log::WARNING, 'mokowaas'); - } - } // HTTPS / Session / License (called from onAfterInitialise) // ------------------------------------------------------------------ diff --git a/source/packages/plg_system_mokowaas/language/en-GB/plg_system_mokowaas.ini b/source/packages/plg_system_mokowaas/language/en-GB/plg_system_mokowaas.ini index fe5a2ac5..30f3bc9e 100644 --- a/source/packages/plg_system_mokowaas/language/en-GB/plg_system_mokowaas.ini +++ b/source/packages/plg_system_mokowaas/language/en-GB/plg_system_mokowaas.ini @@ -16,11 +16,11 @@ PLG_SYSTEM_MOKOWAAS_XML_DESCRIPTION="MokoWaaS core system plugin — coordinates ; ===== Core fieldset ===== PLG_SYSTEM_MOKOWAAS_FIELDSET_CORE_LABEL="Core" -PLG_SYSTEM_MOKOWAAS_FIELDSET_CORE_DESC="Heartbeat token for health monitoring and Grafana integration." +PLG_SYSTEM_MOKOWAAS_FIELDSET_CORE_DESC="Heartbeat token for health monitoring and MokoWaaSHQ integration." ; ===== Diagnostics ===== PLG_SYSTEM_MOKOWAAS_HEALTH_TOKEN_LABEL="Heartbeat Token" -PLG_SYSTEM_MOKOWAAS_HEALTH_TOKEN_DESC="Auto-generated bearer token for the health endpoint. Use this token in your Grafana datasource configuration. Send as Authorization: Bearer <token> header or &token=<value> query parameter." +PLG_SYSTEM_MOKOWAAS_HEALTH_TOKEN_DESC="Auto-generated bearer token for the health endpoint. Use this token in your health monitoring configuration. Send as Authorization: Bearer <token> header or &token=<value> query parameter." ; ===== Site Aliases fieldset ===== PLG_SYSTEM_MOKOWAAS_FIELDSET_ALIASES_LABEL="Site Aliases" @@ -28,7 +28,7 @@ PLG_SYSTEM_MOKOWAAS_FIELDSET_ALIASES_DESC="Configure additional domains that mir PLG_SYSTEM_MOKOWAAS_PRIMARY_DOMAIN_LABEL="Primary Domain" PLG_SYSTEM_MOKOWAAS_PRIMARY_DOMAIN_DESC="The primary domain for this site (e.g. waas.dev.mokoconsulting.tech). Used for backend redirect on alias domains. Do not include https:// prefix." PLG_SYSTEM_MOKOWAAS_SITE_ALIASES_LABEL="Domain Aliases" -PLG_SYSTEM_MOKOWAAS_SITE_ALIASES_DESC="Add domain aliases that serve as mirrors of this site. Each alias gets its own Grafana monitoring datasource." +PLG_SYSTEM_MOKOWAAS_SITE_ALIASES_DESC="Add domain aliases that serve as mirrors of this site. Each alias gets its own MokoWaaSHQ monitoring datasource." PLG_SYSTEM_MOKOWAAS_ALIAS_DOMAIN_LABEL="Domain" PLG_SYSTEM_MOKOWAAS_ALIAS_DOMAIN_DESC="The alias domain name (e.g. www.example.com). Do not include https:// prefix." PLG_SYSTEM_MOKOWAAS_ALIAS_OFFLINE_LABEL="Offline" diff --git a/source/packages/plg_system_mokowaas/language/en-US/plg_system_mokowaas.ini b/source/packages/plg_system_mokowaas/language/en-US/plg_system_mokowaas.ini index fe5a2ac5..30f3bc9e 100644 --- a/source/packages/plg_system_mokowaas/language/en-US/plg_system_mokowaas.ini +++ b/source/packages/plg_system_mokowaas/language/en-US/plg_system_mokowaas.ini @@ -16,11 +16,11 @@ PLG_SYSTEM_MOKOWAAS_XML_DESCRIPTION="MokoWaaS core system plugin — coordinates ; ===== Core fieldset ===== PLG_SYSTEM_MOKOWAAS_FIELDSET_CORE_LABEL="Core" -PLG_SYSTEM_MOKOWAAS_FIELDSET_CORE_DESC="Heartbeat token for health monitoring and Grafana integration." +PLG_SYSTEM_MOKOWAAS_FIELDSET_CORE_DESC="Heartbeat token for health monitoring and MokoWaaSHQ integration." ; ===== Diagnostics ===== PLG_SYSTEM_MOKOWAAS_HEALTH_TOKEN_LABEL="Heartbeat Token" -PLG_SYSTEM_MOKOWAAS_HEALTH_TOKEN_DESC="Auto-generated bearer token for the health endpoint. Use this token in your Grafana datasource configuration. Send as Authorization: Bearer <token> header or &token=<value> query parameter." +PLG_SYSTEM_MOKOWAAS_HEALTH_TOKEN_DESC="Auto-generated bearer token for the health endpoint. Use this token in your health monitoring configuration. Send as Authorization: Bearer <token> header or &token=<value> query parameter." ; ===== Site Aliases fieldset ===== PLG_SYSTEM_MOKOWAAS_FIELDSET_ALIASES_LABEL="Site Aliases" @@ -28,7 +28,7 @@ PLG_SYSTEM_MOKOWAAS_FIELDSET_ALIASES_DESC="Configure additional domains that mir PLG_SYSTEM_MOKOWAAS_PRIMARY_DOMAIN_LABEL="Primary Domain" PLG_SYSTEM_MOKOWAAS_PRIMARY_DOMAIN_DESC="The primary domain for this site (e.g. waas.dev.mokoconsulting.tech). Used for backend redirect on alias domains. Do not include https:// prefix." PLG_SYSTEM_MOKOWAAS_SITE_ALIASES_LABEL="Domain Aliases" -PLG_SYSTEM_MOKOWAAS_SITE_ALIASES_DESC="Add domain aliases that serve as mirrors of this site. Each alias gets its own Grafana monitoring datasource." +PLG_SYSTEM_MOKOWAAS_SITE_ALIASES_DESC="Add domain aliases that serve as mirrors of this site. Each alias gets its own MokoWaaSHQ monitoring datasource." PLG_SYSTEM_MOKOWAAS_ALIAS_DOMAIN_LABEL="Domain" PLG_SYSTEM_MOKOWAAS_ALIAS_DOMAIN_DESC="The alias domain name (e.g. www.example.com). Do not include https:// prefix." PLG_SYSTEM_MOKOWAAS_ALIAS_OFFLINE_LABEL="Offline" diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index 2811669e..d8e09847 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -726,59 +726,6 @@ class plgSystemMokoWaaSInstallerScript implements InstallerScriptInterface $db->execute(); } - // Heartbeat receiver — register with Grafana provisioning - $siteUrl = rtrim(\Joomla\CMS\Uri\Uri::root(), '/'); - $siteName = Factory::getConfig()->get('sitename', 'Joomla'); - $token = $params->get('health_api_token', ''); - - $payload = json_encode([ - 'site_url' => $siteUrl, - 'site_name' => $siteName, - 'health_token' => $token, - 'action' => 'register', - ], JSON_UNESCAPED_SLASHES); - - $ch = curl_init('https://bench.mokoconsulting.tech/api/waas-heartbeat/register'); - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_HTTPHEADER, [ - 'Content-Type: application/json', - 'X-MokoWaaS-Key: moko-waas-hb-2026-x9k4m', - ]); - curl_setopt($ch, CURLOPT_POSTFIELDS, $payload); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_TIMEOUT, 30); - curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - - $response = curl_exec($ch); - $code = (int) curl_getinfo($ch, CURLINFO_HTTP_CODE); - $error = curl_error($ch); - curl_close($ch); - - $app = Factory::getApplication(); - $body = json_decode($response, true); - - if ($error) - { - $app->enqueueMessage('Grafana heartbeat failed: ' . $error, 'warning'); - Log::add('Heartbeat failed: ' . $error, Log::WARNING, 'mokowaas'); - } - elseif ($code === 200) - { - $status = $body['status'] ?? 'ok'; - $app->enqueueMessage( - 'Grafana heartbeat: ' . $status . ' (' . ($body['ds_uid'] ?? '') . ')', - 'message' - ); - } - else - { - $msg = sprintf('Grafana heartbeat failed: HTTP %d — %s', - $code, $body['error'] ?? $body['message'] ?? 'Unknown'); - $app->enqueueMessage($msg, 'warning'); - Log::add($msg, Log::WARNING, 'mokowaas'); - } - } private function registerActionLogExtension() { diff --git a/source/packages/plg_system_mokowaas_monitor/language/en-GB/plg_system_mokowaas_monitor.sys.ini b/source/packages/plg_system_mokowaas_monitor/language/en-GB/plg_system_mokowaas_monitor.sys.ini index fca62b05..63829682 100644 --- a/source/packages/plg_system_mokowaas_monitor/language/en-GB/plg_system_mokowaas_monitor.sys.ini +++ b/source/packages/plg_system_mokowaas_monitor/language/en-GB/plg_system_mokowaas_monitor.sys.ini @@ -1,3 +1,3 @@ ; MokoWaaS Health Monitor Plugin - System strings PLG_SYSTEM_MOKOWAAS_MONITOR="System - MokoWaaS Monitor" -PLG_SYSTEM_MOKOWAAS_MONITOR_DESC="Site health monitoring, Grafana heartbeat integration, and diagnostics." +PLG_SYSTEM_MOKOWAAS_MONITOR_DESC="Site health monitoring, MokoWaaSHQ heartbeat integration, and diagnostics." From 45f100539229615e50b3948e36888e480594c24e Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sun, 7 Jun 2026 03:28:51 +0000 Subject: [PATCH 55/73] chore(version): pre-release bump to 02.34.41-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- source/pkg_mokowaas.xml | 2 +- 42 files changed, 52 insertions(+), 52 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index de8c5cce..7ddc8d29 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.40 + 02.34.41 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index c42d4494..33efd015 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.40 +# VERSION: 02.34.41 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 69127691..50a2c6f0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.40 + VERSION: 02.34.41 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 2c372f40..f6949e89 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.40 + VERSION: 02.34.41 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index c1d694c9..6711cdb1 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.40 + VERSION: 02.34.41 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index 465fc817..2e6705b4 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.40 + VERSION: 02.34.41 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index 6670b73d..eaf14612 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.40 + VERSION: 02.34.41 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index 4092acf8..d2d29150 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.40 +VERSION: 02.34.41 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index 0f584233..ecc51424 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.40 + VERSION: 02.34.41 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.40) +# MokoWaaS Build Guide (VERSION: 02.34.41) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index 245946ba..b66f3d14 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.40 + VERSION: 02.34.41 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.40) +# MokoWaaS Configuration Guide (VERSION: 02.34.41) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index b696add8..1099b330 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.40 + VERSION: 02.34.41 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.40) +# MokoWaaS Installation Guide (VERSION: 02.34.41) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index 5d3d0aa4..3d8ec56e 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.40 + VERSION: 02.34.41 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.40) +# MokoWaaS Operations Guide (VERSION: 02.34.41) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index bb4da7a6..e6de6aff 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.40 + VERSION: 02.34.41 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.40) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.41) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index 30d73a56..f30eb978 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.40 + VERSION: 02.34.41 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.40) +# MokoWaaS Testing Guide (VERSION: 02.34.41) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index 9f9a53cb..570ee751 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.40 + VERSION: 02.34.41 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.40) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.41) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index 510754fb..629a6b94 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.40 + VERSION: 02.34.41 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.40) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.41) ## Introduction diff --git a/docs/index.md b/docs/index.md index 03eab317..bfa498bd 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.40 + VERSION: 02.34.41 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.40) +# MokoWaaS Documentation Index (VERSION: 02.34.41) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index ed875123..28c58eed 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.40 + VERSION: 02.34.41 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.40) +# MokoWaaS Plugin Overview (VERSION: 02.34.41) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index bc6a5e71..b5a82b54 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.40 +VERSION: 02.34.41 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index baf98eb7..b543a5c6 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.40-dev + 02.34.41-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index 77b48169..b0429a13 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.40-dev + 02.34.41-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index 44844c22..c2b8303c 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.40-dev + 02.34.41-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index 6203fe5b..732b67bf 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.40-dev + 02.34.41-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index b89d771f..77577e88 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.40-dev + 02.34.41-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 087eaa9f..103bb5d7 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.40 + * VERSION: 02.34.41 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index 0269348c..2e66e740 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.40 + * VERSION: 02.34.41 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index 9198868a..6459626e 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.40-dev + 02.34.41-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index fe775466..470f3de7 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.40 + * VERSION: 02.34.41 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index 4e68f9e6..3c2bf79f 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.40 + * VERSION: 02.34.41 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index 58ef737a..61cc0e6a 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.40-dev + 02.34.41-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index 0e75565f..d6b4e45f 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.40-dev + 02.34.41-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index 862090a3..fce4a710 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.40-dev + 02.34.41-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index 7664b606..e7d277cb 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.40-dev + 02.34.41-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index ce82f37e..8b11b80d 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.40-dev + 02.34.41-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index 35c24f30..c3db7ec9 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.40-dev + 02.34.41-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index f983dde6..ec079287 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.40-dev + 02.34.41-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index 94c13b72..9834b01c 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.40 + * VERSION: 02.34.41 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 01f31b9f..2484334d 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.40-dev + 02.34.41-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index ebc12542..2359eedb 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.40 + * VERSION: 02.34.41 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index a1c10287..d0c2f498 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.40 + * VERSION: 02.34.41 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index 71ef3398..adf0bd2e 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.40-dev + 02.34.41-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index b04c0347..e79862a6 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.40-dev + 02.34.41-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From 0189c38f4ca7e5e5a23ca63851ebe9008b5ebefd Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 22:31:58 -0500 Subject: [PATCH 56/73] fix: restore missing closing brace for provisionHealthEndpoint() The Grafana heartbeat removal deleted the method's closing brace, causing a syntax error (unexpected token "private"). --- source/packages/plg_system_mokowaas/script.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index fe775466..e93dd5ee 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -725,7 +725,7 @@ class plgSystemMokoWaaSInstallerScript implements InstallerScriptInterface ); $db->execute(); } - + } private function registerActionLogExtension() { From 2efa542338d40301d7e2f29c955dbe137e211725 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sun, 7 Jun 2026 03:32:35 +0000 Subject: [PATCH 57/73] chore(version): pre-release bump to 02.34.42-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- source/pkg_mokowaas.xml | 2 +- 42 files changed, 52 insertions(+), 52 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 7ddc8d29..73c411c3 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.41 + 02.34.42 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 33efd015..db6cc713 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.41 +# VERSION: 02.34.42 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 50a2c6f0..1a46a80b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.41 + VERSION: 02.34.42 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index f6949e89..f5d878c5 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.41 + VERSION: 02.34.42 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 6711cdb1..986c2153 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.41 + VERSION: 02.34.42 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index 2e6705b4..9e36b650 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.41 + VERSION: 02.34.42 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index eaf14612..f903587d 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.41 + VERSION: 02.34.42 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index d2d29150..36f55692 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.41 +VERSION: 02.34.42 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index ecc51424..8f2c4e9d 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.41 + VERSION: 02.34.42 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.41) +# MokoWaaS Build Guide (VERSION: 02.34.42) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index b66f3d14..5f5bb8b7 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.41 + VERSION: 02.34.42 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.41) +# MokoWaaS Configuration Guide (VERSION: 02.34.42) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index 1099b330..38d74aa6 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.41 + VERSION: 02.34.42 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.41) +# MokoWaaS Installation Guide (VERSION: 02.34.42) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index 3d8ec56e..322964cd 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.41 + VERSION: 02.34.42 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.41) +# MokoWaaS Operations Guide (VERSION: 02.34.42) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index e6de6aff..b5881ea7 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.41 + VERSION: 02.34.42 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.41) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.42) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index f30eb978..2ce65898 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.41 + VERSION: 02.34.42 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.41) +# MokoWaaS Testing Guide (VERSION: 02.34.42) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index 570ee751..de0c6157 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.41 + VERSION: 02.34.42 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.41) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.42) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index 629a6b94..23141bff 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.41 + VERSION: 02.34.42 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.41) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.42) ## Introduction diff --git a/docs/index.md b/docs/index.md index bfa498bd..75a31169 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.41 + VERSION: 02.34.42 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.41) +# MokoWaaS Documentation Index (VERSION: 02.34.42) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index 28c58eed..5519820f 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.41 + VERSION: 02.34.42 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.41) +# MokoWaaS Plugin Overview (VERSION: 02.34.42) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index b5a82b54..2921486f 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.41 +VERSION: 02.34.42 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index b543a5c6..6e3bac55 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.41-dev + 02.34.42-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index b0429a13..285c0014 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.41-dev + 02.34.42-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index c2b8303c..5f9ab648 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.41-dev + 02.34.42-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index 732b67bf..48ed2c3d 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.41-dev + 02.34.42-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index 77577e88..27cc80bd 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.41-dev + 02.34.42-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 103bb5d7..b703c884 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.41 + * VERSION: 02.34.42 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index 2e66e740..57064aad 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.41 + * VERSION: 02.34.42 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index 6459626e..b6648514 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.41-dev + 02.34.42-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index 39792dc9..b6c18fdd 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.41 + * VERSION: 02.34.42 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index 3c2bf79f..e6e07f33 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.41 + * VERSION: 02.34.42 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index 61cc0e6a..7cf793c1 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.41-dev + 02.34.42-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index d6b4e45f..a7ec2ef3 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.41-dev + 02.34.42-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index fce4a710..224b556c 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.41-dev + 02.34.42-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index e7d277cb..6f6d8489 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.41-dev + 02.34.42-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index 8b11b80d..3cafb59d 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.41-dev + 02.34.42-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index c3db7ec9..b47989d9 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.41-dev + 02.34.42-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index ec079287..f14788f6 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.41-dev + 02.34.42-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index 9834b01c..77e06b08 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.41 + * VERSION: 02.34.42 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 2484334d..2fccb5db 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.41-dev + 02.34.42-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index 2359eedb..74ec152d 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.41 + * VERSION: 02.34.42 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index d0c2f498..20cc1148 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.41 + * VERSION: 02.34.42 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index adf0bd2e..eb48b750 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.41-dev + 02.34.42-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index e79862a6..b0517054 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.41-dev + 02.34.42-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From e2813d0290b37be66780b656a78a714b85bed3cd Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 22:34:49 -0500 Subject: [PATCH 58/73] fix: fall back to manifest XML for base_url in Send Heartbeat Hidden field defaults aren't in database params until plugin is re-saved. Added same manifest XML fallback used for signing_key. --- .../src/Controller/DisplayController.php | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php b/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php index 928c7fbb..97ca62f0 100644 --- a/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php +++ b/source/packages/com_mokowaas/admin/src/Controller/DisplayController.php @@ -101,6 +101,26 @@ class DisplayController extends BaseController $params = new \Joomla\Registry\Registry($monitorPlugin->params); $baseUrl = rtrim($params->get('base_url', ''), '/'); + // Fall back to manifest XML default if not yet saved in params + if (empty($baseUrl)) + { + $manifestFile = JPATH_PLUGINS . '/system/mokowaas_monitor/mokowaas_monitor.xml'; + + if (is_file($manifestFile)) + { + $xml = simplexml_load_file($manifestFile); + + if ($xml) + { + foreach ($xml->xpath('//field[@name="base_url"]') as $field) + { + $baseUrl = rtrim((string) $field['default'], '/'); + break; + } + } + } + } + if (empty($baseUrl)) { $this->jsonResponse(['success' => false, 'message' => 'MokoWaaSHQ URL not configured in monitor plugin.']); From c4ac0c23ad1594155ff93613021a5b2d3c4baf69 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 22:36:35 -0500 Subject: [PATCH 59/73] feat: show Support PIN on cpanel dashboard module Derives MOKO-XXXX-XXXX support PIN from health token and displays it as a badge in the cpanel header row alongside the version badge. Also adds base_url manifest XML fallback for Send Heartbeat button. --- .../src/Dispatcher/Dispatcher.php | 23 +++++++++++++++++++ .../mod_mokowaas_cpanel/tmpl/default.php | 3 +++ 2 files changed, 26 insertions(+) diff --git a/source/packages/mod_mokowaas_cpanel/src/Dispatcher/Dispatcher.php b/source/packages/mod_mokowaas_cpanel/src/Dispatcher/Dispatcher.php index 4c9b179a..11e6223b 100644 --- a/source/packages/mod_mokowaas_cpanel/src/Dispatcher/Dispatcher.php +++ b/source/packages/mod_mokowaas_cpanel/src/Dispatcher/Dispatcher.php @@ -47,6 +47,29 @@ class Dispatcher extends AbstractModuleDispatcher implements HelperFactoryAwareI $data['currentIp'] = $helper->getCurrentIp(); $data['ssl'] = $helper->getSslStatus(); + // Support PIN derived from health token + $data['supportPin'] = ''; + + try + { + $db->setQuery( + $db->getQuery(true) + ->select($db->quoteName('params')) + ->from($db->quoteName('#__extensions')) + ->where($db->quoteName('element') . ' = ' . $db->quote('mokowaas')) + ->where($db->quoteName('type') . ' = ' . $db->quote('plugin')) + ->where($db->quoteName('folder') . ' = ' . $db->quote('system')) + ); + $coreParams = json_decode((string) $db->loadResult()); + $token = $coreParams->health_api_token ?? ''; + + if (!empty($token)) + { + $data['supportPin'] = 'MOKO-' . strtoupper(substr($token, 0, 4) . '-' . substr($token, 4, 4)); + } + } + catch (\Throwable $e) {} + return $data; } } diff --git a/source/packages/mod_mokowaas_cpanel/tmpl/default.php b/source/packages/mod_mokowaas_cpanel/tmpl/default.php index 2af3a20e..614fb1fb 100644 --- a/source/packages/mod_mokowaas_cpanel/tmpl/default.php +++ b/source/packages/mod_mokowaas_cpanel/tmpl/default.php @@ -66,6 +66,9 @@ $diskColor = ($diskPct !== null && $diskPct > 90) ? 'bg-danger' : (($diskPct !== MokoWaaS mokowaas_version ?? ''); ?> + + + debug)): ?> Debug From 16384d423e6851bdde16646fecff7a08805917dc Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sun, 7 Jun 2026 03:37:15 +0000 Subject: [PATCH 60/73] chore(version): pre-release bump to 02.34.43-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokowaas/mokowaas.xml | 2 +- source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml | 2 +- .../mod_mokowaas_categories/mod_mokowaas_categories.xml | 2 +- source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml | 2 +- source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml | 2 +- source/packages/plg_system_mokowaas/Extension/MokoWaaS.php | 2 +- .../packages/plg_system_mokowaas/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokowaas/mokowaas.xml | 2 +- source/packages/plg_system_mokowaas/script.php | 2 +- source/packages/plg_system_mokowaas/services/provider.php | 2 +- .../plg_system_mokowaas_devtools/mokowaas_devtools.xml | 2 +- .../plg_system_mokowaas_firewall/mokowaas_firewall.xml | 2 +- .../packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml | 2 +- .../packages/plg_system_mokowaas_offline/mokowaas_offline.xml | 2 +- .../packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml | 2 +- .../packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml | 2 +- source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml | 2 +- .../plg_task_mokowaasdemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokowaassync/mokowaassync.xml | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokowaassync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokowaas/mokowaas.xml | 2 +- source/pkg_mokowaas.xml | 2 +- 42 files changed, 52 insertions(+), 52 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 73c411c3..c88b4a1d 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoWaaS MokoConsulting White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments - 02.34.42 + 02.34.43 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index db6cc713..f7e73dfa 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.42 +# VERSION: 02.34.43 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 1a46a80b..c40bb247 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./CHANGELOG.md - VERSION: 02.34.42 + VERSION: 02.34.43 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index f5d878c5..18c8b3fd 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.42 + VERSION: 02.34.43 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 986c2153..9d9c7abe 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoWaaSBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand - VERSION: 02.34.42 + VERSION: 02.34.43 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand --> diff --git a/LICENSE.md b/LICENSE.md index 9e36b650..09e54db8 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: ./LICENSE.md - VERSION: 02.34.42 + VERSION: 02.34.43 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index f903587d..1e4e8731 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS - VERSION: 02.34.42 + VERSION: 02.34.43 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index 36f55692..ba241df1 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.42 +VERSION: 02.34.43 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index 8f2c4e9d..ce482362 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoWaaS.Build REPO: https://github.com/mokoconsulting-tech/mokowaas FILE: build-guide.md - VERSION: 02.34.42 + VERSION: 02.34.43 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoWaaS system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.42) +# MokoWaaS Build Guide (VERSION: 02.34.43) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index 5f5bb8b7..52ba85ac 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.42 + VERSION: 02.34.43 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoWaaS system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.42) +# MokoWaaS Configuration Guide (VERSION: 02.34.43) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index 38d74aa6..e1d25f03 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.42 + VERSION: 02.34.43 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoWaaS system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.42) +# MokoWaaS Installation Guide (VERSION: 02.34.43) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index 322964cd..7ce52283 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.42 + VERSION: 02.34.43 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoWaaS system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.42) +# MokoWaaS Operations Guide (VERSION: 02.34.43) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index b5881ea7..76c605cb 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.42 + VERSION: 02.34.43 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for WaaS plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.42) +# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.43) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index 2ce65898..65c573b4 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.42 + VERSION: 02.34.43 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoWaaS v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.42) +# MokoWaaS Testing Guide (VERSION: 02.34.43) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index de0c6157..bd4d7155 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.42 + VERSION: 02.34.43 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoWaaS plugin NOTE: Designed for administrators and WaaS operations teams --> -# MokoWaaS Troubleshooting Guide (VERSION: 02.34.42) +# MokoWaaS Troubleshooting Guide (VERSION: 02.34.43) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index 23141bff..1d0bcd0e 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Guides REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.42 + VERSION: 02.34.43 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoWaaS plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.42) +# MokoWaaS Upgrade and Versioning Guide (VERSION: 02.34.43) ## Introduction diff --git a/docs/index.md b/docs/index.md index 75a31169..ef5276fa 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoWaaS.Documentation REPO: https://github.com/mokoconsulting-tech/mokowaas - VERSION: 02.34.42 + VERSION: 02.34.43 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoWaaS plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoWaaS Documentation Index (VERSION: 02.34.42) +# MokoWaaS Documentation Index (VERSION: 02.34.43) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index 5519820f..72eaf5e9 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoWaaS REPO: https://github.com/mokoconsulting-tech/mokowaas PATH: /docs/plugin-basic.md - VERSION: 02.34.42 + VERSION: 02.34.43 BRIEF: Baseline documentation for the MokoWaaS system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoWaaS Plugin Overview (VERSION: 02.34.42) +# MokoWaaS Plugin Overview (VERSION: 02.34.43) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index 2921486f..7def0aef 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoWaaS.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoWaaS PATH: /docs/update-server.md -VERSION: 02.34.42 +VERSION: 02.34.43 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokowaas/mokowaas.xml b/source/packages/com_mokowaas/mokowaas.xml index 6e3bac55..0a123587 100644 --- a/source/packages/com_mokowaas/mokowaas.xml +++ b/source/packages/com_mokowaas/mokowaas.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.42-dev + 02.34.43-dev MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoWaaS diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml index 285c0014..dc1fffe4 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.42-dev + 02.34.43-dev MOD_MOKOWAAS_CACHE_DESC Moko\Module\MokoWaaSCache diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml index 5f9ab648..bb2a46ef 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.42-dev + 02.34.43-dev MOD_MOKOWAAS_CATEGORIES_DESC Moko\Module\MokoWaaSCategories diff --git a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml index 48ed2c3d..945c0ffe 100644 --- a/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml +++ b/source/packages/mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.42-dev + 02.34.43-dev MOD_MOKOWAAS_CPANEL_DESC Moko\Module\MokoWaaSCpanel diff --git a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml index 27cc80bd..69b72f51 100644 --- a/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml +++ b/source/packages/mod_mokowaas_menu/mod_mokowaas_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.42-dev + 02.34.43-dev MokoWaaS admin sidebar menu — renders a dedicated MokoWaaS section in the admin menu before Joomla's default menu. Moko\Module\MokoWaaSMenu diff --git a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php index b703c884..e2feb603 100644 --- a/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/source/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.42 + * VERSION: 02.34.43 * PATH: /src/Extension/MokoWaaS.php * NOTE: Core system plugin for MokoWaaS admin tools suite */ diff --git a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php index 57064aad..e0fa3ff0 100644 --- a/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokowaas/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS - * VERSION: 02.34.42 + * VERSION: 02.34.43 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokowaas/mokowaas.xml b/source/packages/plg_system_mokowaas/mokowaas.xml index b6648514..682e8404 100644 --- a/source/packages/plg_system_mokowaas/mokowaas.xml +++ b/source/packages/plg_system_mokowaas/mokowaas.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.42-dev + 02.34.43-dev MokoWaaS core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoWaaS script.php diff --git a/source/packages/plg_system_mokowaas/script.php b/source/packages/plg_system_mokowaas/script.php index b6c18fdd..6cbb2d46 100644 --- a/source/packages/plg_system_mokowaas/script.php +++ b/source/packages/plg_system_mokowaas/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.42 + * VERSION: 02.34.43 * PATH: /src/script.php * BRIEF: Installation script for MokoWaaS plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokowaas/services/provider.php b/source/packages/plg_system_mokowaas/services/provider.php index e6e07f33..acbba599 100644 --- a/source/packages/plg_system_mokowaas/services/provider.php +++ b/source/packages/plg_system_mokowaas/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoWaaS * REPO: https://github.com/mokoconsulting-tech/mokowaas - * VERSION: 02.34.42 + * VERSION: 02.34.43 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml index 7cf793c1..5b07bf9d 100644 --- a/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml +++ b/source/packages/plg_system_mokowaas_devtools/mokowaas_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.42-dev + 02.34.43-dev PLG_SYSTEM_MOKOWAAS_DEVTOOLS_DESC Moko\Plugin\System\MokoWaaSDevTools diff --git a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml index a7ec2ef3..b7c8b8fb 100644 --- a/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml +++ b/source/packages/plg_system_mokowaas_firewall/mokowaas_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.42-dev + 02.34.43-dev PLG_SYSTEM_MOKOWAAS_FIREWALL_DESC Moko\Plugin\System\MokoWaaSFirewall diff --git a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml index 224b556c..cd5afbf2 100644 --- a/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml +++ b/source/packages/plg_system_mokowaas_monitor/mokowaas_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.42-dev + 02.34.43-dev PLG_SYSTEM_MOKOWAAS_MONITOR_DESC Moko\Plugin\System\MokoWaaSMonitor diff --git a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml index 6f6d8489..f174cb2b 100644 --- a/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml +++ b/source/packages/plg_system_mokowaas_offline/mokowaas_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.42-dev + 02.34.43-dev PLG_SYSTEM_MOKOWAAS_OFFLINE_DESC Moko\Plugin\System\MokoWaaSOffline diff --git a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml index 3cafb59d..1644868a 100644 --- a/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml +++ b/source/packages/plg_system_mokowaas_tenant/mokowaas_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.42-dev + 02.34.43-dev PLG_SYSTEM_MOKOWAAS_TENANT_DESC Moko\Plugin\System\MokoWaaSTenant diff --git a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml index b47989d9..26efcd62 100644 --- a/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml +++ b/source/packages/plg_task_mokowaas_tickets/mokowaas_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.42-dev + 02.34.43-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoWaaSTickets diff --git a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml index f14788f6..79ea806a 100644 --- a/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml +++ b/source/packages/plg_task_mokowaasdemo/mokowaasdemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.42-dev + 02.34.43-dev PLG_TASK_MOKOWAASDEMO_DESC Moko\Plugin\Task\MokoWaaSDemo diff --git a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php index 77e06b08..b1cf70d7 100644 --- a/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokowaasdemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/DemoResetService.php - * VERSION: 02.34.42 + * VERSION: 02.34.43 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokowaassync/mokowaassync.xml b/source/packages/plg_task_mokowaassync/mokowaassync.xml index 2fccb5db..9e4d7d8d 100644 --- a/source/packages/plg_task_mokowaassync/mokowaassync.xml +++ b/source/packages/plg_task_mokowaassync/mokowaassync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.42-dev + 02.34.43-dev PLG_TASK_MOKOWAASSYNC_DESC Moko\Plugin\Task\MokoWaaSSync diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php index 74ec152d..57870c8c 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncReceiver.php - * VERSION: 02.34.42 + * VERSION: 02.34.43 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php index 20cc1148..712a956a 100644 --- a/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokowaassync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoWaaS * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS * PATH: /src/packages/plg_system_mokowaas/Service/ContentSyncService.php - * VERSION: 02.34.42 + * VERSION: 02.34.43 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokowaas/mokowaas.xml b/source/packages/plg_webservices_mokowaas/mokowaas.xml index eb48b750..343e6785 100644 --- a/source/packages/plg_webservices_mokowaas/mokowaas.xml +++ b/source/packages/plg_webservices_mokowaas/mokowaas.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.42-dev + 02.34.43-dev Joomla Web Services API routes for MokoWaaS site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoWaaS diff --git a/source/pkg_mokowaas.xml b/source/pkg_mokowaas.xml index b0517054..db74f167 100644 --- a/source/pkg_mokowaas.xml +++ b/source/pkg_mokowaas.xml @@ -2,7 +2,7 @@ Package - MokoWaaS mokowaas - 02.34.42-dev + 02.34.43-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From 891eff01ea51a0e32db663ad868529fdcbfd5032 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sat, 6 Jun 2026 22:42:01 -0500 Subject: [PATCH 61/73] fix: add base_url manifest XML fallback in install script heartbeat --- source/script.php | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/source/script.php b/source/script.php index 0f4ee725..033637e5 100644 --- a/source/script.php +++ b/source/script.php @@ -812,6 +812,26 @@ class Pkg_MokowaasInstallerScript $monitorParams = json_decode((string) $db->setQuery($query)->loadResult()); $baseUrl = rtrim($monitorParams->base_url ?? '', '/'); + // Fall back to manifest XML default if not yet saved in params + if (empty($baseUrl)) + { + $manifestFile = JPATH_PLUGINS . '/system/mokowaas_monitor/mokowaas_monitor.xml'; + + if (is_file($manifestFile)) + { + $xml = simplexml_load_file($manifestFile); + + if ($xml) + { + foreach ($xml->xpath('//field[@name="base_url"]') as $field) + { + $baseUrl = rtrim((string) $field['default'], '/'); + break; + } + } + } + } + if (empty($baseUrl)) { return; From 00d44256b4c0e07f24e4a94b0c4687f686b5f913 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sun, 7 Jun 2026 09:25:45 -0500 Subject: [PATCH 62/73] refactor: rename MokoWaaS to MokoSuite across entire codebase Rebrand all 17 sub-extensions from mokowaas to mokosuite naming, including component, plugins, modules, task plugins, and webservices. Updates package manifest, workflows, docs, wiki, and issue templates. Adds new plg_system_mokosuite_license extension. --- .mokogitea/CLAUDE.md | 42 +- ...waas_site_issue.md => suite_site_issue.md} | 6 +- .mokogitea/copilot-instructions.md | 42 +- .mokogitea/manifest.xml | 6 +- .mokogitea/workflows/auto-release.yml | 648 ++++---- .mokogitea/workflows/pr-check.yml | 1064 ++++++------ .mokogitea/workflows/pre-release.yml | 486 +++--- .mokogitea/workflows/repo-health.yml | 1422 ++++++++--------- CHANGELOG.md | 62 +- CODE_OF_CONDUCT.md | 4 +- CONTRIBUTING.md | 370 ++--- GOVERNANCE.md | 14 +- LICENSE.md | 4 +- README.md | 28 +- docs/guides/build-guide.md | 40 +- docs/guides/configuration-guide.md | 44 +- docs/guides/installation-guide.md | 20 +- docs/guides/operations-guide.md | 24 +- docs/guides/rollback-and-recovery-guide.md | 20 +- docs/guides/testing-guide.md | 80 +- docs/guides/troubleshooting-guide.md | 24 +- docs/guides/upgrade-and-versioning-guide.md | 16 +- docs/index.md | 14 +- docs/plugin-basic.md | 30 +- docs/reference/plugin-overview.md | 12 +- docs/update-server.md | 6 +- .../packages/com_mokosuite/admin/access.xml | 15 + .../admin/catalog.xml | 22 +- .../admin/config.xml | 10 +- .../admin/language/en-GB/com_mokosuite.ini | 41 + .../language/en-GB/com_mokosuite.sys.ini | 19 + .../admin/services/provider.php | 8 +- .../admin/sql/install.mysql.sql | 24 +- .../admin/sql/uninstall.mysql.sql | 13 + .../admin/sql/updates/mysql/02.34.28.sql | 2 +- .../admin/sql/updates/mysql/02.34.29.sql | 2 +- .../src/Controller/DisplayController.php | 118 +- .../admin/src/Model/DashboardModel.php | 58 +- .../admin/src/Model/ErpReportsModel.php | 80 + .../admin/src/Model/ExtensionsModel.php | 10 +- .../admin/src/Model/HtaccessModel.php | 22 +- .../admin/src/Model/ImportModel.php | 38 +- .../admin/src/Model/MaintenanceModel.php | 4 +- .../admin/src/Model/PrivacyModel.php | 56 +- .../admin/src/Model/TicketsModel.php | 82 +- .../admin/src/Model/WaflogModel.php | 22 +- .../admin/src/Service/NotificationService.php | 22 +- .../admin/src/View/Automation/HtmlView.php | 8 +- .../admin/src/View/Canned/HtmlView.php | 10 +- .../admin/src/View/Categories/HtmlView.php | 8 +- .../admin/src/View/Cleanup/HtmlView.php | 8 +- .../admin/src/View/Dashboard/HtmlView.php | 18 +- .../admin/src/View/Database/HtmlView.php | 8 +- .../admin/src/View/ErpReports/HtmlView.php | 40 + .../admin/src/View/Extensions/HtmlView.php | 12 +- .../admin/src/View/Htaccess/HtmlView.php | 12 +- .../admin/src/View/Privacy/HtmlView.php | 8 +- .../admin/src/View/Ticket/HtmlView.php | 12 +- .../admin/src/View/Tickets/HtmlView.php | 12 +- .../admin/src/View/Waflog/HtmlView.php | 8 +- .../admin/tmpl/automation/default.php | 8 +- .../admin/tmpl/canned/default.php | 6 +- .../admin/tmpl/categories/default.php | 6 +- .../admin/tmpl/cleanup/default.php | 4 +- .../admin/tmpl/dashboard/default.php | 98 +- .../admin/tmpl/database/default.php | 8 +- .../admin/tmpl/erpreports/default.php | 71 + .../admin/tmpl/extensions/default.php | 20 +- .../admin/tmpl/htaccess/default.php | 14 +- .../admin/tmpl/privacy/default.php | 12 +- .../admin/tmpl/ticket/default.php | 8 +- .../admin/tmpl/tickets/default.php | 16 +- .../admin/tmpl/waflog/default.php | 16 +- .../api/src/Controller/CacheController.php | 8 +- .../src/Controller/DashboardController.php | 16 +- .../src/Controller/ExtensionsController.php | 8 +- .../api/src/Controller/HealthController.php | 16 +- .../api/src/Controller/InstallController.php | 14 +- .../api/src/Controller/PluginsController.php | 26 +- .../src/Controller/ProvisionController.php | 16 +- .../src/Controller/RemoteLoginController.php | 26 +- .../api/src/Controller/ResetController.php | 18 +- .../api/src/Controller/SnapshotController.php | 20 +- .../api/src/Controller/SyncController.php | 16 +- .../src/Controller/SyncReceiveController.php | 16 +- .../api/src/Controller/UpdateController.php | 8 +- .../media/css/dashboard.css | 36 +- .../media/css/portal.css | 18 +- .../media/js/dashboard.js | 18 +- .../media/js/signature-pad.js | 16 +- .../mokosuite.xml} | 44 +- .../site/language/en-GB/com_mokosuite.ini | 11 + .../site/services/provider.php | 8 +- .../site/src/Controller/DisplayController.php | 18 +- .../site/src/Model/PortalModel.php | 24 +- .../site/src/View/Invoice/HtmlView.php | 4 +- .../site/src/View/Invoices/HtmlView.php | 4 +- .../site/src/View/License/HtmlView.php | 8 +- .../site/src/View/Order/HtmlView.php | 4 +- .../site/src/View/Orders/HtmlView.php | 4 +- .../site/src/View/Portal/HtmlView.php | 4 +- .../site/src/View/Privacy/HtmlView.php | 8 +- .../site/src/View/Sign/HtmlView.php | 10 +- .../site/src/View/SignVerify/HtmlView.php | 10 +- .../site/src/View/Ticket/HtmlView.php | 18 +- .../site/src/View/Tickets/HtmlView.php | 14 +- .../site/tmpl/invoice/default.php | 4 +- .../site/tmpl/invoices/default.php | 6 +- .../site/tmpl/license/default.php | 6 +- .../site/tmpl/order/default.php | 4 +- .../site/tmpl/orders/default.php | 6 +- .../site/tmpl/portal/default.php | 20 +- .../site/tmpl/privacy/default.php | 4 +- .../site/tmpl/sign/default.php | 2 +- .../site/tmpl/signverify/default.php | 2 +- .../site/tmpl/ticket/default.php | 12 +- .../site/tmpl/tickets/default.php | 10 +- .../site/tmpl/tickets/submit.php | 10 +- source/packages/com_mokowaas/admin/access.xml | 15 - .../admin/language/en-GB/com_mokowaas.ini | 41 - .../admin/language/en-GB/com_mokowaas.sys.ini | 19 - .../admin/sql/uninstall.mysql.sql | 13 - .../site/language/en-GB/com_mokowaas.ini | 11 - .../language/en-GB/mod_mokosuite_cache.ini | 4 + .../en-GB/mod_mokosuite_cache.sys.ini | 2 + .../mod_mokosuite_cache.xml} | 12 +- .../services/provider.php | 6 +- .../src/Dispatcher/Dispatcher.php | 2 +- .../mod_mokosuite_cache/tmpl/default.php | 89 ++ .../en-GB/mod_mokosuite_categories.ini | 24 + .../en-GB/mod_mokosuite_categories.sys.ini | 2 + .../mod_mokosuite_categories.xml} | 44 +- .../services/provider.php | 8 +- .../src/Dispatcher/Dispatcher.php | 6 +- .../src/Helper/CategoriesHelper.php | 6 +- .../tmpl/default.php | 16 +- .../language/en-GB/mod_mokosuite_cpanel.ini | 29 + .../en-GB/mod_mokosuite_cpanel.sys.ini | 3 + .../mod_mokosuite_cpanel.xml} | 40 +- .../services/provider.php | 8 +- .../src/Dispatcher/Dispatcher.php | 12 +- .../src/Helper/CpanelHelper.php | 26 +- .../tmpl/default.php | 46 +- .../language/en-GB/mod_mokosuite_menu.ini | 1 + .../language/en-GB/mod_mokosuite_menu.sys.ini | 2 + .../mod_mokosuite_menu.xml} | 12 +- .../services/provider.php | 4 +- .../src/Dispatcher/Dispatcher.php | 2 +- .../tmpl/default.php | 52 +- .../language/en-GB/mod_mokowaas_cache.ini | 4 - .../language/en-GB/mod_mokowaas_cache.sys.ini | 2 - .../mod_mokowaas_cache/tmpl/default.php | 89 -- .../en-GB/mod_mokowaas_categories.ini | 24 - .../en-GB/mod_mokowaas_categories.sys.ini | 2 - .../language/en-GB/mod_mokowaas_cpanel.ini | 29 - .../en-GB/mod_mokowaas_cpanel.sys.ini | 3 - .../language/en-GB/mod_mokowaas_menu.ini | 1 - .../language/en-GB/mod_mokowaas_menu.sys.ini | 2 - .../Extension/MokoSuite.php} | 92 +- .../Field/CopyableTokenField.php | 12 +- .../Helper/MokoSuiteHelper.php} | 12 +- .../administrator/language/en-GB/index.html | 0 .../en-GB/plg_system_mokosuite.sys.ini} | 14 +- .../administrator/language/en-US/index.html | 0 .../en-US/plg_system_mokosuite.sys.ini} | 14 +- .../language/overrides/en-GB.override.ini | 118 ++ .../language/overrides/en-US.override.ini | 118 ++ .../language/overrides/index.html | 0 .../forms/alias_entry.xml | 20 +- .../index.html | 0 .../language/en-GB/index.html | 0 .../language/en-GB/plg_system_mokosuite.ini | 41 + .../en-GB/plg_system_mokosuite.sys.ini} | 14 +- .../language/en-US/index.html | 0 .../language/en-US/plg_system_mokosuite.ini | 41 + .../en-US/plg_system_mokosuite.sys.ini} | 14 +- .../language/overrides/en-GB.override.ini | 46 +- .../language/overrides/en-US.override.ini | 46 +- .../language/overrides/index.html | 0 .../mokosuite.xml} | 36 +- .../payload/index.html | 0 .../script.php | 82 +- .../services/index.html | 0 .../services/provider.php | 10 +- .../en-GB/plg_system_mokosuite_devtools.ini | 17 + .../plg_system_mokosuite_devtools.sys.ini | 3 + .../mokosuite_devtools.xml} | 32 +- .../services/provider.php | 8 +- .../src/Extension/DevTools.php | 10 +- .../forms/trusted_ip_entry.xml | 0 .../en-GB/plg_system_mokosuite_firewall.ini | 70 + .../plg_system_mokosuite_firewall.sys.ini | 3 + .../mokosuite_firewall.xml} | 130 +- .../services/provider.php | 8 +- .../sql/install.mysql.sql | 2 +- .../sql/uninstall.mysql.sql | 1 + .../src/Extension/Firewall.php | 72 +- .../mokosuite_license.xml | 29 + .../services/provider.php | 26 + .../en-GB/plg_system_mokosuite_monitor.ini | 13 + .../plg_system_mokosuite_monitor.sys.ini | 3 + .../mokosuite_monitor.xml} | 24 +- .../services/provider.php | 8 +- .../src/Extension/Monitor.php | 44 +- .../en-GB/plg_system_mokosuite_offline.ini | 13 + .../plg_system_mokosuite_offline.sys.ini | 3 + .../mokosuite_offline.xml} | 24 +- .../services/provider.php | 8 +- .../src/Extension/Tos.php | 8 +- .../src/Field/MenuslugField.php | 8 +- .../en-GB/plg_system_mokosuite_tenant.ini | 23 + .../en-GB/plg_system_mokosuite_tenant.sys.ini | 3 + .../mokosuite_tenant.xml} | 44 +- .../services/provider.php | 8 +- .../src/Extension/Tenant.php | 14 +- .../language/overrides/en-GB.override.ini | 118 -- .../language/overrides/en-US.override.ini | 118 -- .../language/en-GB/plg_system_mokowaas.ini | 41 - .../language/en-US/plg_system_mokowaas.ini | 41 - .../en-GB/plg_system_mokowaas_devtools.ini | 17 - .../plg_system_mokowaas_devtools.sys.ini | 3 - .../en-GB/plg_system_mokowaas_firewall.ini | 70 - .../plg_system_mokowaas_firewall.sys.ini | 3 - .../sql/uninstall.mysql.sql | 1 - .../en-GB/plg_system_mokowaas_monitor.ini | 13 - .../en-GB/plg_system_mokowaas_monitor.sys.ini | 3 - .../en-GB/plg_system_mokowaas_offline.ini | 13 - .../en-GB/plg_system_mokowaas_offline.sys.ini | 3 - .../en-GB/plg_system_mokowaas_tenant.ini | 23 - .../en-GB/plg_system_mokowaas_tenant.sys.ini | 3 - .../en-GB/plg_task_mokosuite_tickets.ini | 4 + .../en-GB/plg_task_mokosuite_tickets.sys.ini | 2 + .../mokosuite_tickets.xml} | 10 +- .../services/provider.php | 4 +- .../src/Extension/TicketAutomation.php | 12 +- .../forms/reset_params.xml | 0 .../language/en-GB/plg_task_mokosuitedemo.ini | 10 + .../en-GB/plg_task_mokosuitedemo.sys.ini | 6 + .../mokosuitedemo.xml} | 14 +- .../services/provider.php | 8 +- .../src/Extension/DemoReset.php | 18 +- .../src/Service/DemoResetService.php | 22 +- .../forms/sync_params.xml | 2 +- .../language/en-GB/plg_task_mokosuitesync.ini | 37 + .../en-GB/plg_task_mokosuitesync.sys.ini | 6 + .../mokosuitesync.xml} | 14 +- .../services/provider.php | 8 +- .../src/Extension/ContentSync.php | 30 +- .../src/Service/ContentSyncReceiver.php | 20 +- .../src/Service/ContentSyncService.php | 20 +- .../en-GB/plg_task_mokowaas_tickets.ini | 4 - .../en-GB/plg_task_mokowaas_tickets.sys.ini | 2 - .../language/en-GB/plg_task_mokowaasdemo.ini | 10 - .../en-GB/plg_task_mokowaasdemo.sys.ini | 6 - .../language/en-GB/plg_task_mokowaassync.ini | 37 - .../en-GB/plg_task_mokowaassync.sys.ini | 6 - .../mokosuite.xml} | 8 +- .../services/provider.php | 10 +- .../src/Extension/MokoSuiteApi.php} | 66 +- source/pkg_mokosuite.xml | 37 + source/pkg_mokowaas.xml | 37 - source/script.php | 264 +-- wiki/api-endpoints.md | 60 +- wiki/configuration.md | 6 +- wiki/grafana-integration.md | 28 +- wiki/health-endpoint.md | 4 +- wiki/health-monitoring.md | 8 +- wiki/home.md | 16 +- wiki/installation.md | 32 +- wiki/plugin-protection.md | 22 +- wiki/site-aliases.md | 8 +- 271 files changed, 4980 insertions(+), 4732 deletions(-) rename .mokogitea/ISSUE_TEMPLATE/{waas_site_issue.md => suite_site_issue.md} (92%) create mode 100644 source/packages/com_mokosuite/admin/access.xml rename source/packages/{com_mokowaas => com_mokosuite}/admin/catalog.xml (89%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/config.xml (85%) create mode 100644 source/packages/com_mokosuite/admin/language/en-GB/com_mokosuite.ini create mode 100644 source/packages/com_mokosuite/admin/language/en-GB/com_mokosuite.sys.ini rename source/packages/{com_mokowaas => com_mokosuite}/admin/services/provider.php (90%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/sql/install.mysql.sql (85%) create mode 100644 source/packages/com_mokosuite/admin/sql/uninstall.mysql.sql rename source/packages/{com_mokowaas => com_mokosuite}/admin/sql/updates/mysql/02.34.28.sql (63%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/sql/updates/mysql/02.34.29.sql (58%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/Controller/DisplayController.php (84%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/Model/DashboardModel.php (95%) create mode 100644 source/packages/com_mokosuite/admin/src/Model/ErpReportsModel.php rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/Model/ExtensionsModel.php (97%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/Model/HtaccessModel.php (97%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/Model/ImportModel.php (95%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/Model/MaintenanceModel.php (98%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/Model/PrivacyModel.php (90%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/Model/TicketsModel.php (91%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/Model/WaflogModel.php (92%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/Service/NotificationService.php (95%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/View/Automation/HtmlView.php (66%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/View/Canned/HtmlView.php (65%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/View/Categories/HtmlView.php (78%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/View/Cleanup/HtmlView.php (68%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/View/Dashboard/HtmlView.php (75%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/View/Database/HtmlView.php (68%) create mode 100644 source/packages/com_mokosuite/admin/src/View/ErpReports/HtmlView.php rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/View/Extensions/HtmlView.php (71%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/View/Htaccess/HtmlView.php (78%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/View/Privacy/HtmlView.php (78%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/View/Ticket/HtmlView.php (83%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/View/Tickets/HtmlView.php (82%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/src/View/Waflog/HtmlView.php (85%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/tmpl/automation/default.php (94%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/tmpl/canned/default.php (94%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/tmpl/categories/default.php (96%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/tmpl/cleanup/default.php (95%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/tmpl/dashboard/default.php (81%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/tmpl/database/default.php (91%) create mode 100644 source/packages/com_mokosuite/admin/tmpl/erpreports/default.php rename source/packages/{com_mokowaas => com_mokosuite}/admin/tmpl/extensions/default.php (92%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/tmpl/htaccess/default.php (97%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/tmpl/privacy/default.php (96%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/tmpl/ticket/default.php (95%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/tmpl/tickets/default.php (94%) rename source/packages/{com_mokowaas => com_mokosuite}/admin/tmpl/waflog/default.php (92%) rename source/packages/{com_mokowaas => com_mokosuite}/api/src/Controller/CacheController.php (92%) rename source/packages/{com_mokowaas => com_mokosuite}/api/src/Controller/DashboardController.php (93%) rename source/packages/{com_mokowaas => com_mokosuite}/api/src/Controller/ExtensionsController.php (96%) rename source/packages/{com_mokowaas => com_mokosuite}/api/src/Controller/HealthController.php (89%) rename source/packages/{com_mokowaas => com_mokosuite}/api/src/Controller/InstallController.php (94%) rename source/packages/{com_mokowaas => com_mokosuite}/api/src/Controller/PluginsController.php (89%) rename source/packages/{com_mokowaas => com_mokosuite}/api/src/Controller/ProvisionController.php (94%) rename source/packages/{com_mokowaas => com_mokosuite}/api/src/Controller/RemoteLoginController.php (82%) rename source/packages/{com_mokowaas => com_mokosuite}/api/src/Controller/ResetController.php (81%) rename source/packages/{com_mokowaas => com_mokosuite}/api/src/Controller/SnapshotController.php (83%) rename source/packages/{com_mokowaas => com_mokosuite}/api/src/Controller/SyncController.php (78%) rename source/packages/{com_mokowaas => com_mokosuite}/api/src/Controller/SyncReceiveController.php (79%) rename source/packages/{com_mokowaas => com_mokosuite}/api/src/Controller/UpdateController.php (93%) rename source/packages/{com_mokowaas => com_mokosuite}/media/css/dashboard.css (65%) rename source/packages/{com_mokowaas => com_mokosuite}/media/css/portal.css (59%) rename source/packages/{com_mokowaas => com_mokosuite}/media/js/dashboard.js (86%) rename source/packages/{com_mokowaas => com_mokosuite}/media/js/signature-pad.js (89%) rename source/packages/{com_mokowaas/mokowaas.xml => com_mokosuite/mokosuite.xml} (52%) create mode 100644 source/packages/com_mokosuite/site/language/en-GB/com_mokosuite.ini rename source/packages/{com_mokowaas => com_mokosuite}/site/services/provider.php (90%) rename source/packages/{com_mokowaas => com_mokosuite}/site/src/Controller/DisplayController.php (92%) rename source/packages/{com_mokowaas => com_mokosuite}/site/src/Model/PortalModel.php (56%) rename source/packages/{com_mokowaas => com_mokosuite}/site/src/View/Invoice/HtmlView.php (84%) rename source/packages/{com_mokowaas => com_mokosuite}/site/src/View/Invoices/HtmlView.php (81%) rename source/packages/{com_mokowaas => com_mokosuite}/site/src/View/License/HtmlView.php (72%) rename source/packages/{com_mokowaas => com_mokosuite}/site/src/View/Order/HtmlView.php (84%) rename source/packages/{com_mokowaas => com_mokosuite}/site/src/View/Orders/HtmlView.php (81%) rename source/packages/{com_mokowaas => com_mokosuite}/site/src/View/Portal/HtmlView.php (82%) rename source/packages/{com_mokowaas => com_mokosuite}/site/src/View/Privacy/HtmlView.php (85%) rename source/packages/{com_mokowaas => com_mokosuite}/site/src/View/Sign/HtmlView.php (71%) rename source/packages/{com_mokowaas => com_mokosuite}/site/src/View/SignVerify/HtmlView.php (66%) rename source/packages/{com_mokowaas => com_mokosuite}/site/src/View/Ticket/HtmlView.php (82%) rename source/packages/{com_mokowaas => com_mokosuite}/site/src/View/Tickets/HtmlView.php (83%) rename source/packages/{com_mokowaas => com_mokosuite}/site/tmpl/invoice/default.php (90%) rename source/packages/{com_mokowaas => com_mokosuite}/site/tmpl/invoices/default.php (83%) rename source/packages/{com_mokowaas => com_mokosuite}/site/tmpl/license/default.php (89%) rename source/packages/{com_mokowaas => com_mokosuite}/site/tmpl/order/default.php (88%) rename source/packages/{com_mokowaas => com_mokosuite}/site/tmpl/orders/default.php (77%) rename source/packages/{com_mokowaas => com_mokosuite}/site/tmpl/portal/default.php (72%) rename source/packages/{com_mokowaas => com_mokosuite}/site/tmpl/privacy/default.php (96%) rename source/packages/{com_mokowaas => com_mokosuite}/site/tmpl/sign/default.php (98%) rename source/packages/{com_mokowaas => com_mokosuite}/site/tmpl/signverify/default.php (98%) rename source/packages/{com_mokowaas => com_mokosuite}/site/tmpl/ticket/default.php (93%) rename source/packages/{com_mokowaas => com_mokosuite}/site/tmpl/tickets/default.php (87%) rename source/packages/{com_mokowaas => com_mokosuite}/site/tmpl/tickets/submit.php (94%) delete mode 100644 source/packages/com_mokowaas/admin/access.xml delete mode 100644 source/packages/com_mokowaas/admin/language/en-GB/com_mokowaas.ini delete mode 100644 source/packages/com_mokowaas/admin/language/en-GB/com_mokowaas.sys.ini delete mode 100644 source/packages/com_mokowaas/admin/sql/uninstall.mysql.sql delete mode 100644 source/packages/com_mokowaas/site/language/en-GB/com_mokowaas.ini create mode 100644 source/packages/mod_mokosuite_cache/language/en-GB/mod_mokosuite_cache.ini create mode 100644 source/packages/mod_mokosuite_cache/language/en-GB/mod_mokosuite_cache.sys.ini rename source/packages/{mod_mokowaas_cache/mod_mokowaas_cache.xml => mod_mokosuite_cache/mod_mokosuite_cache.xml} (62%) rename source/packages/{mod_mokowaas_cache => mod_mokosuite_cache}/services/provider.php (85%) rename source/packages/{mod_mokowaas_menu => mod_mokosuite_cache}/src/Dispatcher/Dispatcher.php (77%) create mode 100644 source/packages/mod_mokosuite_cache/tmpl/default.php create mode 100644 source/packages/mod_mokosuite_categories/language/en-GB/mod_mokosuite_categories.ini create mode 100644 source/packages/mod_mokosuite_categories/language/en-GB/mod_mokosuite_categories.sys.ini rename source/packages/{mod_mokowaas_categories/mod_mokowaas_categories.xml => mod_mokosuite_categories/mod_mokosuite_categories.xml} (52%) rename source/packages/{mod_mokowaas_categories => mod_mokosuite_categories}/services/provider.php (81%) rename source/packages/{mod_mokowaas_categories => mod_mokosuite_categories}/src/Dispatcher/Dispatcher.php (84%) rename source/packages/{mod_mokowaas_categories => mod_mokosuite_categories}/src/Helper/CategoriesHelper.php (96%) rename source/packages/{mod_mokowaas_categories => mod_mokosuite_categories}/tmpl/default.php (85%) create mode 100644 source/packages/mod_mokosuite_cpanel/language/en-GB/mod_mokosuite_cpanel.ini create mode 100644 source/packages/mod_mokosuite_cpanel/language/en-GB/mod_mokosuite_cpanel.sys.ini rename source/packages/{mod_mokowaas_cpanel/mod_mokowaas_cpanel.xml => mod_mokosuite_cpanel/mod_mokosuite_cpanel.xml} (66%) rename source/packages/{mod_mokowaas_cpanel => mod_mokosuite_cpanel}/services/provider.php (82%) rename source/packages/{mod_mokowaas_cpanel => mod_mokosuite_cpanel}/src/Dispatcher/Dispatcher.php (87%) rename source/packages/{mod_mokowaas_cpanel => mod_mokosuite_cpanel}/src/Helper/CpanelHelper.php (92%) rename source/packages/{mod_mokowaas_cpanel => mod_mokosuite_cpanel}/tmpl/default.php (86%) create mode 100644 source/packages/mod_mokosuite_menu/language/en-GB/mod_mokosuite_menu.ini create mode 100644 source/packages/mod_mokosuite_menu/language/en-GB/mod_mokosuite_menu.sys.ini rename source/packages/{mod_mokowaas_menu/mod_mokowaas_menu.xml => mod_mokosuite_menu/mod_mokosuite_menu.xml} (56%) rename source/packages/{mod_mokowaas_menu => mod_mokosuite_menu}/services/provider.php (86%) rename source/packages/{mod_mokowaas_cache => mod_mokosuite_menu}/src/Dispatcher/Dispatcher.php (77%) rename source/packages/{mod_mokowaas_menu => mod_mokosuite_menu}/tmpl/default.php (79%) delete mode 100644 source/packages/mod_mokowaas_cache/language/en-GB/mod_mokowaas_cache.ini delete mode 100644 source/packages/mod_mokowaas_cache/language/en-GB/mod_mokowaas_cache.sys.ini delete mode 100644 source/packages/mod_mokowaas_cache/tmpl/default.php delete mode 100644 source/packages/mod_mokowaas_categories/language/en-GB/mod_mokowaas_categories.ini delete mode 100644 source/packages/mod_mokowaas_categories/language/en-GB/mod_mokowaas_categories.sys.ini delete mode 100644 source/packages/mod_mokowaas_cpanel/language/en-GB/mod_mokowaas_cpanel.ini delete mode 100644 source/packages/mod_mokowaas_cpanel/language/en-GB/mod_mokowaas_cpanel.sys.ini delete mode 100644 source/packages/mod_mokowaas_menu/language/en-GB/mod_mokowaas_menu.ini delete mode 100644 source/packages/mod_mokowaas_menu/language/en-GB/mod_mokowaas_menu.sys.ini rename source/packages/{plg_system_mokowaas/Extension/MokoWaaS.php => plg_system_mokosuite/Extension/MokoSuite.php} (94%) rename source/packages/{plg_system_mokowaas => plg_system_mokosuite}/Field/CopyableTokenField.php (91%) rename source/packages/{plg_system_mokowaas/Helper/MokoWaaSHelper.php => plg_system_mokosuite/Helper/MokoSuiteHelper.php} (87%) rename source/packages/{plg_system_mokowaas => plg_system_mokosuite}/administrator/language/en-GB/index.html (100%) rename source/packages/{plg_system_mokowaas/administrator/language/en-GB/plg_system_mokowaas.sys.ini => plg_system_mokosuite/administrator/language/en-GB/plg_system_mokosuite.sys.ini} (54%) rename source/packages/{plg_system_mokowaas => plg_system_mokosuite}/administrator/language/en-US/index.html (100%) rename source/packages/{plg_system_mokowaas/administrator/language/en-US/plg_system_mokowaas.sys.ini => plg_system_mokosuite/administrator/language/en-US/plg_system_mokosuite.sys.ini} (54%) create mode 100644 source/packages/plg_system_mokosuite/administrator/language/overrides/en-GB.override.ini create mode 100644 source/packages/plg_system_mokosuite/administrator/language/overrides/en-US.override.ini rename source/packages/{plg_system_mokowaas => plg_system_mokosuite}/administrator/language/overrides/index.html (100%) rename source/packages/{plg_system_mokowaas => plg_system_mokosuite}/forms/alias_entry.xml (62%) rename source/packages/{plg_system_mokowaas => plg_system_mokosuite}/index.html (100%) rename source/packages/{plg_system_mokowaas => plg_system_mokosuite}/language/en-GB/index.html (100%) create mode 100644 source/packages/plg_system_mokosuite/language/en-GB/plg_system_mokosuite.ini rename source/packages/{plg_system_mokowaas/language/en-GB/plg_system_mokowaas.sys.ini => plg_system_mokosuite/language/en-GB/plg_system_mokosuite.sys.ini} (54%) rename source/packages/{plg_system_mokowaas => plg_system_mokosuite}/language/en-US/index.html (100%) create mode 100644 source/packages/plg_system_mokosuite/language/en-US/plg_system_mokosuite.ini rename source/packages/{plg_system_mokowaas/language/en-US/plg_system_mokowaas.sys.ini => plg_system_mokosuite/language/en-US/plg_system_mokosuite.sys.ini} (54%) rename source/packages/{plg_system_mokowaas => plg_system_mokosuite}/language/overrides/en-GB.override.ini (62%) rename source/packages/{plg_system_mokowaas => plg_system_mokosuite}/language/overrides/en-US.override.ini (62%) rename source/packages/{plg_system_mokowaas => plg_system_mokosuite}/language/overrides/index.html (100%) rename source/packages/{plg_system_mokowaas/mokowaas.xml => plg_system_mokosuite/mokosuite.xml} (66%) rename source/packages/{plg_system_mokowaas => plg_system_mokosuite}/payload/index.html (100%) rename source/packages/{plg_system_mokowaas => plg_system_mokosuite}/script.php (91%) rename source/packages/{plg_system_mokowaas => plg_system_mokosuite}/services/index.html (100%) rename source/packages/{plg_system_mokowaas => plg_system_mokosuite}/services/provider.php (88%) create mode 100644 source/packages/plg_system_mokosuite_devtools/language/en-GB/plg_system_mokosuite_devtools.ini create mode 100644 source/packages/plg_system_mokosuite_devtools/language/en-GB/plg_system_mokosuite_devtools.sys.ini rename source/packages/{plg_system_mokowaas_devtools/mokowaas_devtools.xml => plg_system_mokosuite_devtools/mokosuite_devtools.xml} (58%) rename source/packages/{plg_system_mokowaas_devtools => plg_system_mokosuite_devtools}/services/provider.php (81%) rename source/packages/{plg_system_mokowaas_devtools => plg_system_mokosuite_devtools}/src/Extension/DevTools.php (94%) rename source/packages/{plg_system_mokowaas_firewall => plg_system_mokosuite_firewall}/forms/trusted_ip_entry.xml (100%) create mode 100644 source/packages/plg_system_mokosuite_firewall/language/en-GB/plg_system_mokosuite_firewall.ini create mode 100644 source/packages/plg_system_mokosuite_firewall/language/en-GB/plg_system_mokosuite_firewall.sys.ini rename source/packages/{plg_system_mokowaas_firewall/mokowaas_firewall.xml => plg_system_mokosuite_firewall/mokosuite_firewall.xml} (66%) rename source/packages/{plg_system_mokowaas_firewall => plg_system_mokosuite_firewall}/services/provider.php (81%) rename source/packages/{plg_system_mokowaas_firewall => plg_system_mokosuite_firewall}/sql/install.mysql.sql (88%) create mode 100644 source/packages/plg_system_mokosuite_firewall/sql/uninstall.mysql.sql rename source/packages/{plg_system_mokowaas_firewall => plg_system_mokosuite_firewall}/src/Extension/Firewall.php (92%) create mode 100644 source/packages/plg_system_mokosuite_license/mokosuite_license.xml create mode 100644 source/packages/plg_system_mokosuite_license/services/provider.php create mode 100644 source/packages/plg_system_mokosuite_monitor/language/en-GB/plg_system_mokosuite_monitor.ini create mode 100644 source/packages/plg_system_mokosuite_monitor/language/en-GB/plg_system_mokosuite_monitor.sys.ini rename source/packages/{plg_system_mokowaas_monitor/mokowaas_monitor.xml => plg_system_mokosuite_monitor/mokosuite_monitor.xml} (81%) rename source/packages/{plg_system_mokowaas_monitor => plg_system_mokosuite_monitor}/services/provider.php (82%) rename source/packages/{plg_system_mokowaas_monitor => plg_system_mokosuite_monitor}/src/Extension/Monitor.php (85%) create mode 100644 source/packages/plg_system_mokosuite_offline/language/en-GB/plg_system_mokosuite_offline.ini create mode 100644 source/packages/plg_system_mokosuite_offline/language/en-GB/plg_system_mokosuite_offline.sys.ini rename source/packages/{plg_system_mokowaas_offline/mokowaas_offline.xml => plg_system_mokosuite_offline/mokosuite_offline.xml} (53%) rename source/packages/{plg_system_mokowaas_offline => plg_system_mokosuite_offline}/services/provider.php (83%) rename source/packages/{plg_system_mokowaas_offline => plg_system_mokosuite_offline}/src/Extension/Tos.php (95%) rename source/packages/{plg_system_mokowaas_offline => plg_system_mokosuite_offline}/src/Field/MenuslugField.php (89%) create mode 100644 source/packages/plg_system_mokosuite_tenant/language/en-GB/plg_system_mokosuite_tenant.ini create mode 100644 source/packages/plg_system_mokosuite_tenant/language/en-GB/plg_system_mokosuite_tenant.sys.ini rename source/packages/{plg_system_mokowaas_tenant/mokowaas_tenant.xml => plg_system_mokosuite_tenant/mokosuite_tenant.xml} (58%) rename source/packages/{plg_system_mokowaas_tenant => plg_system_mokosuite_tenant}/services/provider.php (82%) rename source/packages/{plg_system_mokowaas_tenant => plg_system_mokosuite_tenant}/src/Extension/Tenant.php (93%) delete mode 100644 source/packages/plg_system_mokowaas/administrator/language/overrides/en-GB.override.ini delete mode 100644 source/packages/plg_system_mokowaas/administrator/language/overrides/en-US.override.ini delete mode 100644 source/packages/plg_system_mokowaas/language/en-GB/plg_system_mokowaas.ini delete mode 100644 source/packages/plg_system_mokowaas/language/en-US/plg_system_mokowaas.ini delete mode 100644 source/packages/plg_system_mokowaas_devtools/language/en-GB/plg_system_mokowaas_devtools.ini delete mode 100644 source/packages/plg_system_mokowaas_devtools/language/en-GB/plg_system_mokowaas_devtools.sys.ini delete mode 100644 source/packages/plg_system_mokowaas_firewall/language/en-GB/plg_system_mokowaas_firewall.ini delete mode 100644 source/packages/plg_system_mokowaas_firewall/language/en-GB/plg_system_mokowaas_firewall.sys.ini delete mode 100644 source/packages/plg_system_mokowaas_firewall/sql/uninstall.mysql.sql delete mode 100644 source/packages/plg_system_mokowaas_monitor/language/en-GB/plg_system_mokowaas_monitor.ini delete mode 100644 source/packages/plg_system_mokowaas_monitor/language/en-GB/plg_system_mokowaas_monitor.sys.ini delete mode 100644 source/packages/plg_system_mokowaas_offline/language/en-GB/plg_system_mokowaas_offline.ini delete mode 100644 source/packages/plg_system_mokowaas_offline/language/en-GB/plg_system_mokowaas_offline.sys.ini delete mode 100644 source/packages/plg_system_mokowaas_tenant/language/en-GB/plg_system_mokowaas_tenant.ini delete mode 100644 source/packages/plg_system_mokowaas_tenant/language/en-GB/plg_system_mokowaas_tenant.sys.ini create mode 100644 source/packages/plg_task_mokosuite_tickets/language/en-GB/plg_task_mokosuite_tickets.ini create mode 100644 source/packages/plg_task_mokosuite_tickets/language/en-GB/plg_task_mokosuite_tickets.sys.ini rename source/packages/{plg_task_mokowaas_tickets/mokowaas_tickets.xml => plg_task_mokosuite_tickets/mokosuite_tickets.xml} (70%) rename source/packages/{plg_task_mokowaas_tickets => plg_task_mokosuite_tickets}/services/provider.php (84%) rename source/packages/{plg_task_mokowaas_tickets => plg_task_mokosuite_tickets}/src/Extension/TicketAutomation.php (83%) rename source/packages/{plg_task_mokowaasdemo => plg_task_mokosuitedemo}/forms/reset_params.xml (100%) create mode 100644 source/packages/plg_task_mokosuitedemo/language/en-GB/plg_task_mokosuitedemo.ini create mode 100644 source/packages/plg_task_mokosuitedemo/language/en-GB/plg_task_mokosuitedemo.sys.ini rename source/packages/{plg_task_mokowaasdemo/mokowaasdemo.xml => plg_task_mokosuitedemo/mokosuitedemo.xml} (65%) rename source/packages/{plg_task_mokowaasdemo => plg_task_mokosuitedemo}/services/provider.php (81%) rename source/packages/{plg_task_mokowaasdemo => plg_task_mokosuitedemo}/src/Extension/DemoReset.php (90%) rename source/packages/{plg_task_mokowaasdemo => plg_task_mokosuitedemo}/src/Service/DemoResetService.php (96%) rename source/packages/{plg_task_mokowaassync => plg_task_mokosuitesync}/forms/sync_params.xml (92%) create mode 100644 source/packages/plg_task_mokosuitesync/language/en-GB/plg_task_mokosuitesync.ini create mode 100644 source/packages/plg_task_mokosuitesync/language/en-GB/plg_task_mokosuitesync.sys.ini rename source/packages/{plg_task_mokowaassync/mokowaassync.xml => plg_task_mokosuitesync/mokosuitesync.xml} (65%) rename source/packages/{plg_task_mokowaassync => plg_task_mokosuitesync}/services/provider.php (81%) rename source/packages/{plg_task_mokowaassync => plg_task_mokosuitesync}/src/Extension/ContentSync.php (93%) rename source/packages/{plg_task_mokowaassync => plg_task_mokosuitesync}/src/Service/ContentSyncReceiver.php (98%) rename source/packages/{plg_task_mokowaassync => plg_task_mokosuitesync}/src/Service/ContentSyncService.php (97%) delete mode 100644 source/packages/plg_task_mokowaas_tickets/language/en-GB/plg_task_mokowaas_tickets.ini delete mode 100644 source/packages/plg_task_mokowaas_tickets/language/en-GB/plg_task_mokowaas_tickets.sys.ini delete mode 100644 source/packages/plg_task_mokowaasdemo/language/en-GB/plg_task_mokowaasdemo.ini delete mode 100644 source/packages/plg_task_mokowaasdemo/language/en-GB/plg_task_mokowaasdemo.sys.ini delete mode 100644 source/packages/plg_task_mokowaassync/language/en-GB/plg_task_mokowaassync.ini delete mode 100644 source/packages/plg_task_mokowaassync/language/en-GB/plg_task_mokowaassync.sys.ini rename source/packages/{plg_webservices_mokowaas/mokowaas.xml => plg_webservices_mokosuite/mokosuite.xml} (61%) rename source/packages/{plg_webservices_mokowaas => plg_webservices_mokosuite}/services/provider.php (77%) rename source/packages/{plg_webservices_mokowaas/src/Extension/MokoWaaSApi.php => plg_webservices_mokosuite/src/Extension/MokoSuiteApi.php} (54%) create mode 100644 source/pkg_mokosuite.xml delete mode 100644 source/pkg_mokowaas.xml diff --git a/.mokogitea/CLAUDE.md b/.mokogitea/CLAUDE.md index abba657b..50591f52 100644 --- a/.mokogitea/CLAUDE.md +++ b/.mokogitea/CLAUDE.md @@ -1,4 +1,4 @@ -# MokoWaaS +# MokoSuite Joomla 5/6 admin tools suite — heartbeat health monitoring, extension management, security firewall, tenant restrictions, and site administration. @@ -6,10 +6,10 @@ Joomla 5/6 admin tools suite — heartbeat health monitoring, extension manageme | Field | Value | |---|---| -| **Package** | `pkg_mokowaas` | +| **Package** | `pkg_mokosuite` | | **Language** | PHP 8.1+ | | **Branch** | develop on `dev`, merge to `main` (protected) | -| **Wiki** | [MokoWaaS Wiki](https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/wiki) | +| **Wiki** | [MokoSuite Wiki](https://git.mokoconsulting.tech/MokoConsulting/MokoSuite/wiki) | ## Commands @@ -19,38 +19,38 @@ composer install # Install PHP dependencies ## Architecture -Joomla **package** (`pkg_mokowaas`) with 17 sub-extensions: +Joomla **package** (`pkg_mokosuite`) with 17 sub-extensions: -### Core Plugin (`plg_system_mokowaas`) -- Heartbeat health endpoint (`/?mokowaas=health`) with 16 diagnostic checks +### Core Plugin (`plg_system_mokosuite`) +- Heartbeat health endpoint (`/?mokosuite=health`) with 16 diagnostic checks - Grafana provisioning and heartbeat sender - Site alias / domain management - Extension cascade (enable/disable coordination) - Download key preservation across Joomla updates -- Namespace: `Moko\Plugin\System\MokoWaaS` +- Namespace: `Moko\Plugin\System\MokoSuite` ### Feature Plugins -- `plg_system_mokowaas_firewall` — WAF, IP blocklist, security headers, password policy -- `plg_system_mokowaas_tenant` — admin restrictions for non-master users -- `plg_system_mokowaas_devtools` — dev mode, hit reset, version cleanup, download key reset -- `plg_system_mokowaas_offline` — offline mode bypass for legal pages -- `plg_system_mokowaas_monitor` — Grafana heartbeat registration +- `plg_system_mokosuite_firewall` — WAF, IP blocklist, security headers, password policy +- `plg_system_mokosuite_tenant` — admin restrictions for non-master users +- `plg_system_mokosuite_devtools` — dev mode, hit reset, version cleanup, download key reset +- `plg_system_mokosuite_offline` — offline mode bypass for legal pages +- `plg_system_mokosuite_monitor` — Grafana heartbeat registration -### Component (`com_mokowaas`) +### Component (`com_mokosuite`) - Admin dashboard with plugin management, WAF charts, extension catalog - Helpdesk ticketing system - REST API controllers ### Modules -- `mod_mokowaas_cpanel` — admin dashboard widget -- `mod_mokowaas_menu` — admin sidebar menu -- `mod_mokowaas_cache` — status bar cache/temp cleaner -- `mod_mokowaas_categories` — auto-category tree menu +- `mod_mokosuite_cpanel` — admin dashboard widget +- `mod_mokosuite_menu` — admin sidebar menu +- `mod_mokosuite_cache` — status bar cache/temp cleaner +- `mod_mokosuite_categories` — auto-category tree menu ### Task Plugins -- `plg_task_mokowaasdemo` — scheduled demo site reset -- `plg_task_mokowaassync` — scheduled content sync -- `plg_task_mokowaas_tickets` — ticket automation +- `plg_task_mokosuitedemo` — scheduled demo site reset +- `plg_task_mokosuitesync` — scheduled content sync +- `plg_task_mokosuite_tickets` — ticket automation ### Update Server @@ -59,7 +59,7 @@ MokoGitea generates update feeds dynamically from releases — no static `update ## Source Directory Source lives in `source/` (not `src/`): -- `source/pkg_mokowaas.xml` — package manifest +- `source/pkg_mokosuite.xml` — package manifest - `source/script.php` — install script - `source/packages/` — all sub-extensions diff --git a/.mokogitea/ISSUE_TEMPLATE/waas_site_issue.md b/.mokogitea/ISSUE_TEMPLATE/suite_site_issue.md similarity index 92% rename from .mokogitea/ISSUE_TEMPLATE/waas_site_issue.md rename to .mokogitea/ISSUE_TEMPLATE/suite_site_issue.md index 4a0c89b8..42b4cd47 100644 --- a/.mokogitea/ISSUE_TEMPLATE/waas_site_issue.md +++ b/.mokogitea/ISSUE_TEMPLATE/suite_site_issue.md @@ -1,6 +1,6 @@ --- -name: WaaS Client Site Issue -about: Report an issue with a WaaS client site (branding, deployment, media sync) +name: Suite Client Site Issue +about: Report an issue with a Suite client site (branding, deployment, media sync) title: '[WAAS] ' labels: 'waas, client-site' assignees: '' @@ -52,7 +52,7 @@ Attach screenshots showing the issue (desktop and mobile if relevant). ## Template Details - **Joomla Version**: [e.g., 5.x] - **Template Name**: [e.g., clienttemplate] -- **MokoWaaS Plugin**: [Active / Inactive] +- **MokoSuite Plugin**: [Active / Inactive] - **MokoOnyx Admin**: [Active / Inactive] ## CSS Custom Properties diff --git a/.mokogitea/copilot-instructions.md b/.mokogitea/copilot-instructions.md index a46f9a2a..7c90aee7 100644 --- a/.mokogitea/copilot-instructions.md +++ b/.mokogitea/copilot-instructions.md @@ -11,9 +11,9 @@ INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoStandards PATH: /templates/github/copilot-instructions.joomla.md.template VERSION: XX.YY.ZZ -BRIEF: GitHub Copilot custom instructions template for Joomla/MokoWaaS governed repositories -NOTE: Synced to .github/copilot-instructions.md in all Joomla/WaaS repos via bulk sync. - Tokens replaced at sync time: MokoWaaS, https://github.com/mokoconsulting-tech/MokoWaaS, {{EXTENSION_NAME}}, +BRIEF: GitHub Copilot custom instructions template for Joomla/MokoSuite governed repositories +NOTE: Synced to .github/copilot-instructions.md in all Joomla/Suite repos via bulk sync. + Tokens replaced at sync time: MokoSuite, https://github.com/mokoconsulting-tech/MokoSuite, {{EXTENSION_NAME}}, {{EXTENSION_TYPE}}, {{EXTENSION_ELEMENT}} --> @@ -36,24 +36,24 @@ NOTE: Synced to .github/copilot-instructions.md in all Joomla/WaaS repos via bul > > | Placeholder | Where to find the value | > |---|---| -> | `MokoWaaS` | The GitHub repository name (visible in the URL, `README.md` heading, or `git remote -v`) | -> | `https://github.com/mokoconsulting-tech/MokoWaaS` | Full GitHub URL, e.g. `https://github.com/mokoconsulting-tech/` | +> | `MokoSuite` | The GitHub repository name (visible in the URL, `README.md` heading, or `git remote -v`) | +> | `https://github.com/mokoconsulting-tech/MokoSuite` | Full GitHub URL, e.g. `https://github.com/mokoconsulting-tech/` | > | `{{EXTENSION_NAME}}` | The `` element in `manifest.xml` at the repository root | > | `{{EXTENSION_TYPE}}` | The `type` attribute of the `` tag in `manifest.xml` (`component`, `module`, `plugin`, or `template`) | > | `{{EXTENSION_ELEMENT}}` | The `` tag in `manifest.xml`, or the filename prefix (e.g. `com_myextension`, `mod_mymodule`) | > > --- -# MokoWaaS — GitHub Copilot Custom Instructions +# MokoSuite — GitHub Copilot Custom Instructions ## What This Repo Is -This is a **Moko Consulting MokoWaaS** (Joomla) repository governed by [MokoStandards](https://github.com/mokoconsulting-tech/MokoStandards). All coding standards, workflows, and policies are defined there and enforced here via bulk sync. +This is a **Moko Consulting MokoSuite** (Joomla) repository governed by [MokoStandards](https://github.com/mokoconsulting-tech/MokoStandards). All coding standards, workflows, and policies are defined there and enforced here via bulk sync. -Repository URL: https://github.com/mokoconsulting-tech/MokoWaaS +Repository URL: https://github.com/mokoconsulting-tech/MokoSuite Extension name: **{{EXTENSION_NAME}}** Extension type: **{{EXTENSION_TYPE}}** (`{{EXTENSION_ELEMENT}}`) -Platform: **Joomla 4.x / MokoWaaS** +Platform: **Joomla 4.x / MokoSuite** --- @@ -77,9 +77,9 @@ Every new file needs a copyright header as its first content. * SPDX-License-Identifier: GPL-3.0-or-later * * FILE INFORMATION - * DEFGROUP: MokoWaaS.{{EXTENSION_TYPE}} - * INGROUP: MokoWaaS - * REPO: https://github.com/mokoconsulting-tech/MokoWaaS + * DEFGROUP: MokoSuite.{{EXTENSION_TYPE}} + * INGROUP: MokoSuite + * REPO: https://github.com/mokoconsulting-tech/MokoSuite * PATH: /path/to/file.php * VERSION: XX.YY.ZZ * BRIEF: One-line description of purpose @@ -98,9 +98,9 @@ This file is part of a Moko Consulting project. SPDX-License-Identifier: GPL-3.0-or-later # FILE INFORMATION -DEFGROUP: MokoWaaS.Documentation -INGROUP: MokoWaaS -REPO: https://github.com/mokoconsulting-tech/MokoWaaS +DEFGROUP: MokoSuite.Documentation +INGROUP: MokoSuite +REPO: https://github.com/mokoconsulting-tech/MokoSuite PATH: /docs/file.md VERSION: XX.YY.ZZ BRIEF: One-line description @@ -138,7 +138,7 @@ The version in `README.md` **must always match** the `` tag in `manifes 01.02.04 - https://github.com/mokoconsulting-tech/MokoWaaS/releases/download/01.02.04/{{EXTENSION_ELEMENT}}-01.02.04.zip + https://github.com/mokoconsulting-tech/MokoSuite/releases/download/01.02.04/{{EXTENSION_ELEMENT}}-01.02.04.zip @@ -152,7 +152,7 @@ The version in `README.md` **must always match** the `` tag in `manifes ## Joomla Extension Structure ``` -MokoWaaS/ +MokoSuite/ ├── manifest.xml # Joomla installer manifest (root — required) ├── (no updates.xml) # Update XML is generated dynamically by MokoGitea ├── site/ # Frontend (site) code @@ -191,11 +191,11 @@ MokoWaaS/ https://git.mokoconsulting.tech/{Owner}/{Repo}/updates.xml ``` -The package manifest (`pkg_mokowaas.xml`) references it via: +The package manifest (`pkg_mokosuite.xml`) references it via: ```xml - - https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/updates.xml + + https://git.mokoconsulting.tech/MokoConsulting/MokoSuite/updates.xml ``` @@ -257,7 +257,7 @@ This repository is governed by [MokoStandards](https://github.com/mokoconsulting | [branching-strategy.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/policy/branching-strategy.md) | Branch naming, hierarchy, and release workflow | | [merge-strategy.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/policy/merge-strategy.md) | Squash-merge policy and PR title/body conventions | | [changelog-standards.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/policy/changelog-standards.md) | How and when to update CHANGELOG.md | -| [joomla-development-guide.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/guide/waas/joomla-development-guide.md) | MokoWaaS Joomla extension development guide | +| [joomla-development-guide.md](https://github.com/mokoconsulting-tech/MokoStandards/blob/main/docs/guide/waas/joomla-development-guide.md) | MokoSuite Joomla extension development guide | --- diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index c88b4a1d..371ceb40 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -5,10 +5,10 @@ --> - MokoWaaS - Package - MokoWaaS + MokoSuite + Package - MokoSuite MokoConsulting - White-label identity, security hardening, and tenant restriction layer for WaaS-managed Joomla environments + White-label identity, security hardening, and tenant restriction layer for Suite-managed Joomla environments 02.34.43 GNU General Public License v3 diff --git a/.mokogitea/workflows/auto-release.yml b/.mokogitea/workflows/auto-release.yml index ca404350..b657b980 100644 --- a/.mokogitea/workflows/auto-release.yml +++ b/.mokogitea/workflows/auto-release.yml @@ -1,324 +1,324 @@ -# Copyright (C) 2026 Moko Consulting -# -# SPDX-License-Identifier: GPL-3.0-or-later -# -# FILE INFORMATION -# DEFGROUP: Gitea.Workflow -# INGROUP: moko-platform.Release -# REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/moko-platform -# PATH: /templates/workflows/universal/auto-release.yml.template -# VERSION: 05.00.00 -# BRIEF: Universal build & release � detects platform from manifest.xml -# -# +========================================================================+ -# | UNIVERSAL BUILD & RELEASE PIPELINE | -# +========================================================================+ -# | | -# | Reads manifest.xml (joomla|dolibarr|generic) to branch logic. | -# | | -# | Platform-specific: | -# | joomla: XML manifest, type-prefixed packages | -# | dolibarr: mod*.class.php, update.txt, dev version reset | -# | generic: README-only, no update stream | -# | | -# +========================================================================+ - -name: "Universal: Build & Release" - -on: - pull_request: - types: [opened, closed] - branches: - - main - workflow_dispatch: - inputs: - action: - description: 'Action to perform' - required: false - type: choice - default: release - options: - - release - - promote-rc - -env: - FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true - GITEA_URL: ${{ vars.GITEA_URL || 'https://git.mokoconsulting.tech' }} - GITEA_ORG: ${{ vars.GITEA_ORG || github.repository_owner }} - GITEA_REPO: ${{ vars.GITEA_REPO || github.event.repository.name }} - -permissions: - contents: write - -jobs: - # ── PR Opened → Rename branch to RC and build RC release ───────────────────── - promote-rc: - name: Promote to RC - runs-on: release - if: >- - (github.event.action == 'opened' && github.event.pull_request.merged != true) || - (github.event_name == 'workflow_dispatch' && inputs.action == 'promote-rc') - - steps: - - name: Checkout repository - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - with: - token: ${{ secrets.MOKOGITEA_TOKEN }} - fetch-depth: 1 - - - name: Setup moko-platform tools - env: - MOKO_CLONE_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }} - MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting - run: | - if [ -f /opt/moko-platform/cli/version_bump.php ] && [ -f /opt/moko-platform/vendor/autoload.php ]; then - echo Using pre-installed /opt/moko-platform - echo MOKO_CLI=/opt/moko-platform/cli >> $GITHUB_ENV - else - echo Falling back to fresh clone - if ! command -v composer > /dev/null 2>&1; then - sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer > /dev/null 2>&1 - fi - rm -rf /tmp/moko-platform-api - CLONE_URL=https://x-access-token:${MOKO_CLONE_TOKEN}@${MOKO_CLONE_HOST}/moko-platform.git - git clone --depth 1 --branch main --quiet $CLONE_URL /tmp/moko-platform-api - cd /tmp/moko-platform-api - composer install --no-dev --no-interaction --quiet - echo MOKO_CLI=/tmp/moko-platform-api/cli >> $GITHUB_ENV - fi - - - name: Rename branch to rc - run: | - php ${MOKO_CLI}/branch_rename.php \ - --from "${{ github.event.pull_request.head.ref || 'dev' }}" --to rc \ - --token "${{ secrets.MOKOGITEA_TOKEN }}" \ - --api-base "${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" \ - --pr "${{ github.event.pull_request.number }}" - - - name: Checkout rc and configure git - run: | - git fetch origin rc - git checkout rc - git config --local user.email "gitea-actions[bot]@mokoconsulting.tech" - git config --local user.name "gitea-actions[bot]" - git remote set-url origin "https://x-access-token:${{ secrets.MOKOGITEA_TOKEN }}@git.mokoconsulting.tech/${{ github.repository }}.git" - - - name: Publish RC release - run: | - php ${MOKO_CLI}/release_publish.php \ - --path . --stability rc --bump minor --branch rc \ - --token "${{ secrets.MOKOGITEA_TOKEN }}" - - - name: Summary - if: always() - run: | - echo "## Promoted to Release Candidate" >> $GITHUB_STEP_SUMMARY - echo "Branch renamed to rc, minor bump, RC release built" >> $GITHUB_STEP_SUMMARY - - # ── Merged PR → Build & Release (or promote RC to stable) ──────────────────── - release: - name: Build & Release Pipeline - runs-on: release - if: >- - github.event.pull_request.merged == true || - (github.event_name == 'workflow_dispatch' && inputs.action != 'promote-rc') - - steps: - - name: Checkout repository - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - with: - token: ${{ secrets.MOKOGITEA_TOKEN }} - fetch-depth: 0 - - - name: Configure git for bot pushes - run: | - git config --local user.email "gitea-actions[bot]@mokoconsulting.tech" - git config --local user.name "gitea-actions[bot]" - git remote set-url origin "https://x-access-token:${{ secrets.MOKOGITEA_TOKEN }}@git.mokoconsulting.tech/${{ github.repository }}.git" - - - name: Check for merge conflict markers - run: | - CONFLICTS=$(grep -rn '<<<<<<< \|>>>>>>> \|^=======$' --include='*.php' --include='*.xml' --include='*.css' --include='*.js' --include='*.json' --include='*.md' --include='*.yml' --include='*.yaml' --include='*.ini' --include='*.txt' . 2>/dev/null | grep -v '.git/' || true) - if [ -n "$CONFLICTS" ]; then - echo "::error::Merge conflict markers found — aborting release" - echo "## Release Blocked: Conflict Markers" >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - echo "$CONFLICTS" >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - exit 1 - fi - echo "No conflict markers found" - - - name: Setup moko-platform tools - env: - MOKO_CLONE_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }} - MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting - COMPOSER_AUTH: '{"github-oauth":{"github.com":"${{ secrets.GH_MIRROR_TOKEN }}"}}' - run: | - if [ -f /opt/moko-platform/cli/version_bump.php ] && [ -f /opt/moko-platform/vendor/autoload.php ]; then - echo Using pre-installed /opt/moko-platform - echo MOKO_CLI=/opt/moko-platform/cli >> $GITHUB_ENV - else - echo Falling back to fresh clone - if ! command -v composer > /dev/null 2>&1; then - sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer > /dev/null 2>&1 - fi - rm -rf /tmp/moko-platform-api - CLONE_URL=https://x-access-token:${MOKO_CLONE_TOKEN}@${MOKO_CLONE_HOST}/moko-platform.git - git clone --depth 1 --branch main --quiet $CLONE_URL /tmp/moko-platform-api - cd /tmp/moko-platform-api - composer install --no-dev --no-interaction --quiet - echo MOKO_CLI=/tmp/moko-platform-api/cli >> $GITHUB_ENV - fi - - - name: "Publish stable release" - run: | - php ${MOKO_CLI}/release_publish.php \ - --path . --stability stable --bump minor --branch main \ - --token "${{ secrets.MOKOGITEA_TOKEN }}" - - - name: Update release notes from CHANGELOG.md - run: | - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - - # Extract [Unreleased] section from changelog - if [ -f "CHANGELOG.md" ]; then - NOTES=$(awk '/^## \[Unreleased\]/{found=1; next} /^## \[/{if(found) exit} found{print}' CHANGELOG.md) - [ -z "$NOTES" ] && NOTES="Stable release" - else - NOTES="Stable release" - fi - - # Update release body via API - RELEASE_ID=$(curl -sf -H "Authorization: token ${{ secrets.MOKOGITEA_TOKEN }}" \ - "${API_BASE}/releases/tags/stable" | python3 -c "import json,sys; print(json.load(sys.stdin).get('id',''))" 2>/dev/null || true) - - if [ -n "$RELEASE_ID" ]; then - python3 -c " - import json, urllib.request - body = open('/dev/stdin').read() - payload = json.dumps({'body': body}).encode() - req = urllib.request.Request( - '${API_BASE}/releases/${RELEASE_ID}', - data=payload, method='PATCH', - headers={ - 'Authorization': 'token ${{ secrets.MOKOGITEA_TOKEN }}', - 'Content-Type': 'application/json' - }) - urllib.request.urlopen(req) - " <<< "$NOTES" - echo "Release notes updated from CHANGELOG.md" - fi - - # -- STEP 9: Mirror to GitHub (stable only) -------------------------------- - - name: "Step 9: Mirror release to GitHub" - if: >- - steps.version.outputs.skip != 'true' && - secrets.GH_MIRROR_TOKEN != '' - continue-on-error: true - run: | - VERSION="${{ steps.bump.outputs.version || steps.version.outputs.version }}" - RELEASE_TAG="${{ steps.version.outputs.release_tag }}" - GH_REPO="${{ vars.GH_MIRROR_REPO || github.repository }}" - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - php ${MOKO_CLI}/release_mirror.php \ - --version "$VERSION" --tag "$RELEASE_TAG" \ - --token "${{ secrets.MOKOGITEA_TOKEN }}" --api-base "$API_BASE" \ - --gh-token "${{ secrets.GH_MIRROR_TOKEN }}" --gh-repo "$GH_REPO" \ - --branch main 2>&1 || true - echo "GitHub mirror updated" >> $GITHUB_STEP_SUMMARY - - # -- STEP 10: Sync main branch to GitHub mirror ---------------------------- - - name: "Step 10: Push main to GitHub mirror" - if: >- - steps.version.outputs.skip != 'true' && - secrets.GH_MIRROR_TOKEN != '' - continue-on-error: true - run: | - GH_REPO="${{ vars.GH_MIRROR_REPO || github.repository }}" - GH_ORG=$(echo "$GH_REPO" | cut -d/ -f1) - GH_NAME=$(echo "$GH_REPO" | cut -d/ -f2) - git remote add github "https://x-access-token:${{ secrets.GH_MIRROR_TOKEN }}@github.com/${GH_ORG}/${GH_NAME}.git" 2>/dev/null || \ - git remote set-url github "https://x-access-token:${{ secrets.GH_MIRROR_TOKEN }}@github.com/${GH_ORG}/${GH_NAME}.git" - git fetch origin main --depth=1 - git push github origin/main:refs/heads/main --force 2>/dev/null \ - && echo "main branch pushed to GitHub mirror" \ - || echo "WARNING: GitHub mirror push failed" - - - name: "Step 11: Delete rc branch and recreate dev from main" - if: steps.version.outputs.skip != 'true' - continue-on-error: true - run: | - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - TOKEN="${{ secrets.MOKOGITEA_TOKEN }}" - - # Delete rc branch (ephemeral — created by promote-rc) - curl -sf -X DELETE -H "Authorization: token ${TOKEN}" \ - "${API_BASE}/branches/rc" 2>/dev/null \ - && echo "Deleted rc branch" || echo "rc branch not found" - - # Delete dev branch - curl -sf -X DELETE -H "Authorization: token ${TOKEN}" \ - "${API_BASE}/branches/dev" 2>/dev/null && echo "Deleted dev branch" - - # Recreate dev from main (now includes version bump + changelog promotion) - curl -sf -X POST -H "Authorization: token ${TOKEN}" \ - -H "Content-Type: application/json" \ - "${API_BASE}/branches" \ - -d '{"new_branch_name":"dev","old_branch_name":"main"}' 2>/dev/null && echo "Recreated dev from main" - - echo "Pre-release branches cleaned, dev reset from main" >> $GITHUB_STEP_SUMMARY - - - name: "Step 12: Create version branch from main" - if: steps.version.outputs.skip != 'true' - continue-on-error: true - run: | - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - TOKEN="${{ secrets.MOKOGITEA_TOKEN }}" - VERSION="${{ steps.bump.outputs.version || steps.version.outputs.version }}" - BRANCH_NAME="version/${VERSION}" - MAIN_SHA=$(git rev-parse HEAD) - - # Delete old version branch if it exists (same version re-release) - curl -sf -X DELETE -H "Authorization: token ${TOKEN}" "${API_BASE}/branches/${BRANCH_NAME}" 2>/dev/null && echo "Deleted old ${BRANCH_NAME}" - - # Create version/XX.YY.ZZ from main - curl -sf -X POST -H "Authorization: token ${TOKEN}" -H "Content-Type: application/json" "${API_BASE}/branches" -d "{\"new_branch_name\":\"${BRANCH_NAME}\",\"old_branch_name\":\"main\"}" 2>/dev/null && echo "Created ${BRANCH_NAME} from main (${MAIN_SHA})" || echo "WARNING: ${BRANCH_NAME} creation failed" - - echo "Version branch created: ${BRANCH_NAME} (${MAIN_SHA})" >> $GITHUB_STEP_SUMMARY - - - - # -- Dolibarr post-release: Reset dev version ----------------------------- - - name: "Post-release: Reset dev version" - if: steps.version.outputs.skip != 'true' - continue-on-error: true - run: | - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - php ${MOKO_CLI}/version_reset_dev.php \ - --token "${{ secrets.MOKOGITEA_TOKEN }}" --api-base "${API_BASE}" \ - --branch dev --path . 2>&1 || true - - # -- Summary -------------------------------------------------------------- - - name: Pipeline Summary - if: always() - run: | - VERSION="${{ steps.bump.outputs.version || steps.version.outputs.version }}" - PLATFORM="${{ steps.platform.outputs.platform }}" - if [ "${{ steps.version.outputs.skip }}" = "true" ]; then - echo "## Release Skipped" >> $GITHUB_STEP_SUMMARY - echo "No VERSION in README.md" >> $GITHUB_STEP_SUMMARY - elif [ "${{ steps.check.outputs.already_released }}" = "true" ]; then - echo "## Already Released — ${VERSION}" >> $GITHUB_STEP_SUMMARY - else - echo "" >> $GITHUB_STEP_SUMMARY - echo "## Build & Release Complete (${PLATFORM})" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "| Step | Result |" >> $GITHUB_STEP_SUMMARY - echo "|------|--------|" >> $GITHUB_STEP_SUMMARY - echo "| Platform | \`${PLATFORM}\` |" >> $GITHUB_STEP_SUMMARY - echo "| Version | \`${VERSION}\` |" >> $GITHUB_STEP_SUMMARY - echo "| Branch | \`${{ steps.version.outputs.branch }}\` |" >> $GITHUB_STEP_SUMMARY - echo "| Tag | \`${{ steps.version.outputs.tag }}\` |" >> $GITHUB_STEP_SUMMARY - echo "| Release | [View](${GITEA_URL}/${GITEA_ORG}/${GITEA_REPO}/releases/tag/${{ steps.version.outputs.tag }}) |" >> $GITHUB_STEP_SUMMARY - fi +# Copyright (C) 2026 Moko Consulting +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# FILE INFORMATION +# DEFGROUP: Gitea.Workflow +# INGROUP: moko-platform.Release +# REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/moko-platform +# PATH: /templates/workflows/universal/auto-release.yml.template +# VERSION: 05.00.00 +# BRIEF: Universal build & release � detects platform from manifest.xml +# +# +========================================================================+ +# | UNIVERSAL BUILD & RELEASE PIPELINE | +# +========================================================================+ +# | | +# | Reads manifest.xml (joomla|dolibarr|generic) to branch logic. | +# | | +# | Platform-specific: | +# | joomla: XML manifest, type-prefixed packages | +# | dolibarr: mod*.class.php, update.txt, dev version reset | +# | generic: README-only, no update stream | +# | | +# +========================================================================+ + +name: "Universal: Build & Release" + +on: + pull_request: + types: [opened, closed] + branches: + - main + workflow_dispatch: + inputs: + action: + description: 'Action to perform' + required: false + type: choice + default: release + options: + - release + - promote-rc + +env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true + GITEA_URL: ${{ vars.GITEA_URL || 'https://git.mokoconsulting.tech' }} + GITEA_ORG: ${{ vars.GITEA_ORG || github.repository_owner }} + GITEA_REPO: ${{ vars.GITEA_REPO || github.event.repository.name }} + +permissions: + contents: write + +jobs: + # ── PR Opened → Rename branch to RC and build RC release ───────────────────── + promote-rc: + name: Promote to RC + runs-on: release + if: >- + (github.event.action == 'opened' && github.event.pull_request.merged != true) || + (github.event_name == 'workflow_dispatch' && inputs.action == 'promote-rc') + + steps: + - name: Checkout repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + token: ${{ secrets.MOKOGITEA_TOKEN }} + fetch-depth: 1 + + - name: Setup moko-platform tools + env: + MOKO_CLONE_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }} + MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting + run: | + if [ -f /opt/moko-platform/cli/version_bump.php ] && [ -f /opt/moko-platform/vendor/autoload.php ]; then + echo Using pre-installed /opt/moko-platform + echo MOKO_CLI=/opt/moko-platform/cli >> $GITHUB_ENV + else + echo Falling back to fresh clone + if ! command -v composer > /dev/null 2>&1; then + sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer > /dev/null 2>&1 + fi + rm -rf /tmp/moko-platform-api + CLONE_URL=https://x-access-token:${MOKO_CLONE_TOKEN}@${MOKO_CLONE_HOST}/moko-platform.git + git clone --depth 1 --branch main --quiet $CLONE_URL /tmp/moko-platform-api + cd /tmp/moko-platform-api + composer install --no-dev --no-interaction --quiet + echo MOKO_CLI=/tmp/moko-platform-api/cli >> $GITHUB_ENV + fi + + - name: Rename branch to rc + run: | + php ${MOKO_CLI}/branch_rename.php \ + --from "${{ github.event.pull_request.head.ref || 'dev' }}" --to rc \ + --token "${{ secrets.MOKOGITEA_TOKEN }}" \ + --api-base "${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" \ + --pr "${{ github.event.pull_request.number }}" + + - name: Checkout rc and configure git + run: | + git fetch origin rc + git checkout rc + git config --local user.email "gitea-actions[bot]@mokoconsulting.tech" + git config --local user.name "gitea-actions[bot]" + git remote set-url origin "https://x-access-token:${{ secrets.MOKOGITEA_TOKEN }}@git.mokoconsulting.tech/${{ github.repository }}.git" + + - name: Publish RC release + run: | + php ${MOKO_CLI}/release_publish.php \ + --path . --stability rc --bump minor --branch rc \ + --token "${{ secrets.MOKOGITEA_TOKEN }}" + + - name: Summary + if: always() + run: | + echo "## Promoted to Release Candidate" >> $GITHUB_STEP_SUMMARY + echo "Branch renamed to rc, minor bump, RC release built" >> $GITHUB_STEP_SUMMARY + + # ── Merged PR → Build & Release (or promote RC to stable) ──────────────────── + release: + name: Build & Release Pipeline + runs-on: release + if: >- + github.event.pull_request.merged == true || + (github.event_name == 'workflow_dispatch' && inputs.action != 'promote-rc') + + steps: + - name: Checkout repository + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + token: ${{ secrets.MOKOGITEA_TOKEN }} + fetch-depth: 0 + + - name: Configure git for bot pushes + run: | + git config --local user.email "gitea-actions[bot]@mokoconsulting.tech" + git config --local user.name "gitea-actions[bot]" + git remote set-url origin "https://x-access-token:${{ secrets.MOKOGITEA_TOKEN }}@git.mokoconsulting.tech/${{ github.repository }}.git" + + - name: Check for merge conflict markers + run: | + CONFLICTS=$(grep -rn '<<<<<<< \|>>>>>>> \|^=======$' --include='*.php' --include='*.xml' --include='*.css' --include='*.js' --include='*.json' --include='*.md' --include='*.yml' --include='*.yaml' --include='*.ini' --include='*.txt' . 2>/dev/null | grep -v '.git/' || true) + if [ -n "$CONFLICTS" ]; then + echo "::error::Merge conflict markers found — aborting release" + echo "## Release Blocked: Conflict Markers" >> $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + echo "$CONFLICTS" >> $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + exit 1 + fi + echo "No conflict markers found" + + - name: Setup moko-platform tools + env: + MOKO_CLONE_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }} + MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting + COMPOSER_AUTH: '{"github-oauth":{"github.com":"${{ secrets.GH_MIRROR_TOKEN }}"}}' + run: | + if [ -f /opt/moko-platform/cli/version_bump.php ] && [ -f /opt/moko-platform/vendor/autoload.php ]; then + echo Using pre-installed /opt/moko-platform + echo MOKO_CLI=/opt/moko-platform/cli >> $GITHUB_ENV + else + echo Falling back to fresh clone + if ! command -v composer > /dev/null 2>&1; then + sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer > /dev/null 2>&1 + fi + rm -rf /tmp/moko-platform-api + CLONE_URL=https://x-access-token:${MOKO_CLONE_TOKEN}@${MOKO_CLONE_HOST}/moko-platform.git + git clone --depth 1 --branch main --quiet $CLONE_URL /tmp/moko-platform-api + cd /tmp/moko-platform-api + composer install --no-dev --no-interaction --quiet + echo MOKO_CLI=/tmp/moko-platform-api/cli >> $GITHUB_ENV + fi + + - name: "Publish stable release" + run: | + php ${MOKO_CLI}/release_publish.php \ + --path . --stability stable --bump minor --branch main \ + --token "${{ secrets.MOKOGITEA_TOKEN }}" + + - name: Update release notes from CHANGELOG.md + run: | + API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" + + # Extract [Unreleased] section from changelog + if [ -f "CHANGELOG.md" ]; then + NOTES=$(awk '/^## \[Unreleased\]/{found=1; next} /^## \[/{if(found) exit} found{print}' CHANGELOG.md) + [ -z "$NOTES" ] && NOTES="Stable release" + else + NOTES="Stable release" + fi + + # Update release body via API + RELEASE_ID=$(curl -sf -H "Authorization: token ${{ secrets.MOKOGITEA_TOKEN }}" \ + "${API_BASE}/releases/tags/stable" | python3 -c "import json,sys; print(json.load(sys.stdin).get('id',''))" 2>/dev/null || true) + + if [ -n "$RELEASE_ID" ]; then + python3 -c " + import json, urllib.request + body = open('/dev/stdin').read() + payload = json.dumps({'body': body}).encode() + req = urllib.request.Request( + '${API_BASE}/releases/${RELEASE_ID}', + data=payload, method='PATCH', + headers={ + 'Authorization': 'token ${{ secrets.MOKOGITEA_TOKEN }}', + 'Content-Type': 'application/json' + }) + urllib.request.urlopen(req) + " <<< "$NOTES" + echo "Release notes updated from CHANGELOG.md" + fi + + # -- STEP 9: Mirror to GitHub (stable only) -------------------------------- + - name: "Step 9: Mirror release to GitHub" + if: >- + steps.version.outputs.skip != 'true' && + secrets.GH_MIRROR_TOKEN != '' + continue-on-error: true + run: | + VERSION="${{ steps.bump.outputs.version || steps.version.outputs.version }}" + RELEASE_TAG="${{ steps.version.outputs.release_tag }}" + GH_REPO="${{ vars.GH_MIRROR_REPO || github.repository }}" + API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" + php ${MOKO_CLI}/release_mirror.php \ + --version "$VERSION" --tag "$RELEASE_TAG" \ + --token "${{ secrets.MOKOGITEA_TOKEN }}" --api-base "$API_BASE" \ + --gh-token "${{ secrets.GH_MIRROR_TOKEN }}" --gh-repo "$GH_REPO" \ + --branch main 2>&1 || true + echo "GitHub mirror updated" >> $GITHUB_STEP_SUMMARY + + # -- STEP 10: Sync main branch to GitHub mirror ---------------------------- + - name: "Step 10: Push main to GitHub mirror" + if: >- + steps.version.outputs.skip != 'true' && + secrets.GH_MIRROR_TOKEN != '' + continue-on-error: true + run: | + GH_REPO="${{ vars.GH_MIRROR_REPO || github.repository }}" + GH_ORG=$(echo "$GH_REPO" | cut -d/ -f1) + GH_NAME=$(echo "$GH_REPO" | cut -d/ -f2) + git remote add github "https://x-access-token:${{ secrets.GH_MIRROR_TOKEN }}@github.com/${GH_ORG}/${GH_NAME}.git" 2>/dev/null || \ + git remote set-url github "https://x-access-token:${{ secrets.GH_MIRROR_TOKEN }}@github.com/${GH_ORG}/${GH_NAME}.git" + git fetch origin main --depth=1 + git push github origin/main:refs/heads/main --force 2>/dev/null \ + && echo "main branch pushed to GitHub mirror" \ + || echo "WARNING: GitHub mirror push failed" + + - name: "Step 11: Delete rc branch and recreate dev from main" + if: steps.version.outputs.skip != 'true' + continue-on-error: true + run: | + API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" + TOKEN="${{ secrets.MOKOGITEA_TOKEN }}" + + # Delete rc branch (ephemeral — created by promote-rc) + curl -sf -X DELETE -H "Authorization: token ${TOKEN}" \ + "${API_BASE}/branches/rc" 2>/dev/null \ + && echo "Deleted rc branch" || echo "rc branch not found" + + # Delete dev branch + curl -sf -X DELETE -H "Authorization: token ${TOKEN}" \ + "${API_BASE}/branches/dev" 2>/dev/null && echo "Deleted dev branch" + + # Recreate dev from main (now includes version bump + changelog promotion) + curl -sf -X POST -H "Authorization: token ${TOKEN}" \ + -H "Content-Type: application/json" \ + "${API_BASE}/branches" \ + -d '{"new_branch_name":"dev","old_branch_name":"main"}' 2>/dev/null && echo "Recreated dev from main" + + echo "Pre-release branches cleaned, dev reset from main" >> $GITHUB_STEP_SUMMARY + + - name: "Step 12: Create version branch from main" + if: steps.version.outputs.skip != 'true' + continue-on-error: true + run: | + API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" + TOKEN="${{ secrets.MOKOGITEA_TOKEN }}" + VERSION="${{ steps.bump.outputs.version || steps.version.outputs.version }}" + BRANCH_NAME="version/${VERSION}" + MAIN_SHA=$(git rev-parse HEAD) + + # Delete old version branch if it exists (same version re-release) + curl -sf -X DELETE -H "Authorization: token ${TOKEN}" "${API_BASE}/branches/${BRANCH_NAME}" 2>/dev/null && echo "Deleted old ${BRANCH_NAME}" + + # Create version/XX.YY.ZZ from main + curl -sf -X POST -H "Authorization: token ${TOKEN}" -H "Content-Type: application/json" "${API_BASE}/branches" -d "{\"new_branch_name\":\"${BRANCH_NAME}\",\"old_branch_name\":\"main\"}" 2>/dev/null && echo "Created ${BRANCH_NAME} from main (${MAIN_SHA})" || echo "WARNING: ${BRANCH_NAME} creation failed" + + echo "Version branch created: ${BRANCH_NAME} (${MAIN_SHA})" >> $GITHUB_STEP_SUMMARY + + + + # -- Dolibarr post-release: Reset dev version ----------------------------- + - name: "Post-release: Reset dev version" + if: steps.version.outputs.skip != 'true' + continue-on-error: true + run: | + API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" + php ${MOKO_CLI}/version_reset_dev.php \ + --token "${{ secrets.MOKOGITEA_TOKEN }}" --api-base "${API_BASE}" \ + --branch dev --path . 2>&1 || true + + # -- Summary -------------------------------------------------------------- + - name: Pipeline Summary + if: always() + run: | + VERSION="${{ steps.bump.outputs.version || steps.version.outputs.version }}" + PLATFORM="${{ steps.platform.outputs.platform }}" + if [ "${{ steps.version.outputs.skip }}" = "true" ]; then + echo "## Release Skipped" >> $GITHUB_STEP_SUMMARY + echo "No VERSION in README.md" >> $GITHUB_STEP_SUMMARY + elif [ "${{ steps.check.outputs.already_released }}" = "true" ]; then + echo "## Already Released — ${VERSION}" >> $GITHUB_STEP_SUMMARY + else + echo "" >> $GITHUB_STEP_SUMMARY + echo "## Build & Release Complete (${PLATFORM})" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "| Step | Result |" >> $GITHUB_STEP_SUMMARY + echo "|------|--------|" >> $GITHUB_STEP_SUMMARY + echo "| Platform | \`${PLATFORM}\` |" >> $GITHUB_STEP_SUMMARY + echo "| Version | \`${VERSION}\` |" >> $GITHUB_STEP_SUMMARY + echo "| Branch | \`${{ steps.version.outputs.branch }}\` |" >> $GITHUB_STEP_SUMMARY + echo "| Tag | \`${{ steps.version.outputs.tag }}\` |" >> $GITHUB_STEP_SUMMARY + echo "| Release | [View](${GITEA_URL}/${GITEA_ORG}/${GITEA_REPO}/releases/tag/${{ steps.version.outputs.tag }}) |" >> $GITHUB_STEP_SUMMARY + fi diff --git a/.mokogitea/workflows/pr-check.yml b/.mokogitea/workflows/pr-check.yml index aa31cc72..8a952da4 100644 --- a/.mokogitea/workflows/pr-check.yml +++ b/.mokogitea/workflows/pr-check.yml @@ -1,532 +1,532 @@ -# Copyright (C) 2026 Moko Consulting -# -# SPDX-License-Identifier: GPL-3.0-or-later -# -# FILE INFORMATION -# DEFGROUP: Gitea.Workflow -# INGROUP: moko-platform.CI -# REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/moko-platform -# PATH: /templates/workflows/universal/pr-check.yml.template -# VERSION: 09.23.00 -# BRIEF: PR gate — branch policy + code validation before merge - -name: "Universal: PR Check" - -on: - pull_request: - types: [opened, synchronize, reopened, edited] - -permissions: - contents: read - pull-requests: write - -env: - FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true - -jobs: - # ── Branch Policy ────────────────────────────────────────────────────── - branch-policy: - name: Branch Policy - runs-on: ubuntu-latest - steps: - - name: Check branch merge target - run: | - HEAD="${{ github.head_ref }}" - BASE="${{ github.base_ref }}" - - echo "PR: ${HEAD} → ${BASE}" - - ALLOWED=true - REASON="" - - case "$HEAD" in - feature/*|feat/*) - if [ "$BASE" != "dev" ]; then - ALLOWED=false - REASON="Feature branches must target 'dev', not '${BASE}'" - fi - ;; - fix/*|bugfix/*) - if [ "$BASE" != "dev" ]; then - ALLOWED=false - REASON="Fix branches must target 'dev', not '${BASE}'" - fi - ;; - patch/*) - if [ "$BASE" != "dev" ] && [ "$BASE" != "rc" ]; then - ALLOWED=false - REASON="Patch branches must target 'dev' or 'rc', not '${BASE}'" - fi - ;; - hotfix/*) - if [ "$BASE" != "dev" ] && [ "$BASE" != "main" ]; then - ALLOWED=false - REASON="Hotfix branches can only target 'dev' or 'main', not '${BASE}'" - fi - ;; - rc) - if [ "$BASE" != "main" ]; then - ALLOWED=false - REASON="RC branch can only merge into 'main', not '${BASE}'" - fi - ;; - dev) - if [ "$BASE" != "main" ]; then - ALLOWED=false - REASON="Dev branch can only merge into 'main', not '${BASE}'" - fi - ;; - esac - - if [ "$ALLOWED" = false ]; then - echo "::error::${REASON}" - echo "## Branch Policy Violation" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "${REASON}" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "### Allowed merge paths:" >> $GITHUB_STEP_SUMMARY - echo "- \`feature/*\` → \`dev\`" >> $GITHUB_STEP_SUMMARY - echo "- \`fix/*\` → \`dev\`" >> $GITHUB_STEP_SUMMARY - echo "- \`hotfix/*\` → \`dev\` or \`main\`" >> $GITHUB_STEP_SUMMARY - echo "- \`dev\` → \`main\`" >> $GITHUB_STEP_SUMMARY - echo "- \`rc/*\` → \`main\`" >> $GITHUB_STEP_SUMMARY - exit 1 - fi - - echo "Branch policy: OK (${HEAD} → ${BASE})" - echo "## Branch Policy: Passed" >> $GITHUB_STEP_SUMMARY - - # ── Code Validation ──────────────────────────────────────────────────── - validate: - name: Validate PR - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Check for merge conflict markers - run: | - CONFLICTS=$(grep -rn '<<<<<<< \|>>>>>>> \|^=======$' --include='*.php' --include='*.xml' --include='*.css' --include='*.js' --include='*.json' --include='*.md' --include='*.yml' --include='*.yaml' --include='*.ini' --include='*.txt' . 2>/dev/null | grep -v '.git/' || true) - if [ -n "$CONFLICTS" ]; then - echo "::error::Merge conflict markers found in source files" - echo "## Conflict Markers Found" >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - echo "$CONFLICTS" >> $GITHUB_STEP_SUMMARY - echo '```' >> $GITHUB_STEP_SUMMARY - exit 1 - fi - echo "No conflict markers found" - - - name: Detect platform - id: platform - run: | - # Read platform from XML manifest ( tag) or plain text fallback - PLATFORM=$(sed -n 's/.*\([^<]*\)<\/platform>.*/\1/p' .mokogitea/manifest.xml 2>/dev/null | head -1) - [ -z "$PLATFORM" ] && PLATFORM=$(cat .mokogitea/manifest.xml 2>/dev/null | tr -d '[:space:]') - [ -z "$PLATFORM" ] && PLATFORM="generic" - echo "platform=$PLATFORM" >> "$GITHUB_OUTPUT" - - - name: Setup PHP - if: steps.platform.outputs.platform == 'joomla' || steps.platform.outputs.platform == 'dolibarr' - run: | - if ! command -v php &> /dev/null; then - sudo apt-get update -qq - sudo apt-get install -y -qq php-cli php-mbstring php-xml >/dev/null 2>&1 - fi - - - name: PHP syntax check - if: steps.platform.outputs.platform == 'joomla' || steps.platform.outputs.platform == 'dolibarr' - run: | - ERRORS=0 - while IFS= read -r -d '' file; do - if ! php -l "$file" 2>&1 | grep -q "No syntax errors"; then - ERRORS=$((ERRORS + 1)) - fi - done < <(find . -name "*.php" -not -path "./.git/*" -not -path "./vendor/*" -print0) - echo "PHP lint: ${ERRORS} error(s)" - [ "$ERRORS" -eq 0 ] || { echo "::error::PHP syntax errors found"; exit 1; } - - - name: Joomla JEXEC guard check - if: steps.platform.outputs.platform == 'joomla' - run: | - ERRORS=0 - while IFS= read -r -d '' file; do - # Skip vendor, node_modules, and index.html stub files - case "$file" in ./vendor/*|./node_modules/*) continue ;; esac - # Check first 10 lines for JEXEC or JPATH guard - if ! head -20 "$file" | grep -qE "defined\s*\(\s*['\"](_JEXEC|JPATH_BASE|\\\\JPATH_PLATFORM)['\"]"; then - echo "::error file=${file}::Missing JEXEC guard: ${file}" - ERRORS=$((ERRORS + 1)) - fi - done < <(find . -name "*.php" -path "*/src/*" -not -path "./.git/*" -not -path "./vendor/*" -print0) - if [ "$ERRORS" -gt 0 ]; then - echo "::error::${ERRORS} PHP file(s) missing defined('_JEXEC') or die guard" - echo "## JEXEC Guard Check: Failed" >> $GITHUB_STEP_SUMMARY - echo "${ERRORS} file(s) in src/ are missing the Joomla execution guard." >> $GITHUB_STEP_SUMMARY - exit 1 - fi - echo "JEXEC guard: OK" - - - name: Joomla directory listing protection - if: steps.platform.outputs.platform == 'joomla' - run: | - MISSING=0 - SOURCE_DIR="src" - [ ! -d "$SOURCE_DIR" ] && exit 0 - while IFS= read -r dir; do - if [ ! -f "${dir}/index.html" ]; then - echo "::warning::Missing index.html in ${dir} (directory listing protection)" - MISSING=$((MISSING + 1)) - fi - done < <(find "$SOURCE_DIR" -type d -not -path "./.git/*" -not -path "*/vendor/*" -not -path "*/node_modules/*") - if [ "$MISSING" -gt 0 ]; then - echo "## Directory Protection" >> $GITHUB_STEP_SUMMARY - echo "${MISSING} director(ies) missing index.html" >> $GITHUB_STEP_SUMMARY - fi - echo "Directory protection: ${MISSING} missing (advisory)" - - - name: Joomla script file and asset checks - if: steps.platform.outputs.platform == 'joomla' - run: | - ERRORS=0 - MANIFEST=$(find . -maxdepth 3 -name "*.xml" ! -path "./.git/*" -exec grep -l '/dev/null | head -1) - [ -z "$MANIFEST" ] && exit 0 - MANIFEST_DIR=$(dirname "$MANIFEST") - - # Check scriptfile exists if declared - SCRIPTFILE=$(sed -n 's/.*\([^<]*\)<\/scriptfile>.*/\1/p' "$MANIFEST" 2>/dev/null) - if [ -n "$SCRIPTFILE" ]; then - if [ ! -f "${MANIFEST_DIR}/${SCRIPTFILE}" ]; then - echo "::error::Manifest declares ${SCRIPTFILE} but file not found at ${MANIFEST_DIR}/${SCRIPTFILE}" - ERRORS=$((ERRORS + 1)) - else - echo "Script file: ${MANIFEST_DIR}/${SCRIPTFILE} (OK)" - fi - fi - - # Require joomla.asset.json and validate it - ASSET_JSON=$(find "$MANIFEST_DIR" -name "joomla.asset.json" -not -path "./.git/*" 2>/dev/null | head -1) - if [ -z "$ASSET_JSON" ]; then - echo "::error::joomla.asset.json not found — Joomla asset system is required" - ERRORS=$((ERRORS + 1)) - else - if command -v php &> /dev/null; then - php -r "json_decode(file_get_contents('$ASSET_JSON')); if(json_last_error()!==JSON_ERROR_NONE){echo json_last_error_msg();exit(1);}" 2>&1 || { - echo "::error::joomla.asset.json is not valid JSON" - ERRORS=$((ERRORS + 1)) - } - fi - echo "joomla.asset.json: valid" - fi - - # Validate all XML files in src/ are well-formed - XML_ERRORS=0 - if command -v php &> /dev/null; then - while IFS= read -r -d '' xmlfile; do - if ! php -r "libxml_use_internal_errors(true); \$x = simplexml_load_file('$xmlfile'); if(!\$x){foreach(libxml_get_errors() as \$e) echo trim(\$e->message) . ' in $xmlfile'; exit(1);}" 2>&1; then - XML_ERRORS=$((XML_ERRORS + 1)) - fi - done < <(find "$MANIFEST_DIR" -name "*.xml" -not -path "./.git/*" -print0) - fi - if [ "$XML_ERRORS" -gt 0 ]; then - echo "::error::${XML_ERRORS} XML file(s) are malformed" - ERRORS=$((ERRORS + 1)) - else - echo "XML well-formedness: OK" - fi - - [ "$ERRORS" -gt 0 ] && exit 1 - echo "Joomla asset checks: OK" - - - name: Validate platform manifest - run: | - PLATFORM="${{ steps.platform.outputs.platform }}" - case "$PLATFORM" in - joomla) - MANIFEST=$(find . -maxdepth 3 -name "*.xml" ! -path "./.git/*" -exec grep -l '/dev/null | head -1) - if [ -z "$MANIFEST" ]; then - echo "::warning::No Joomla manifest found (WaaS site)" - exit 0 - fi - echo "Manifest: ${MANIFEST}" - if command -v php &> /dev/null; then - php -r "libxml_use_internal_errors(true); \$x = simplexml_load_file('$MANIFEST'); if(!\$x){foreach(libxml_get_errors() as \$e) echo \$e->message; exit(1);}" || { echo "::error::Manifest XML is malformed"; exit 1; } - fi - for ELEMENT in name version description; do - grep -q "<${ELEMENT}>" "$MANIFEST" || { echo "::error::Missing <${ELEMENT}> in manifest"; exit 1; } - done - # Block legacy raw/branch update server URLs on MokoGitea - RAW_URLS=$(grep -n 'raw/branch' "$MANIFEST" | grep -i 'mokoconsulting\|mokogitea\|git\.mokoconsulting\.tech' || true) - if [ -n "$RAW_URLS" ]; then - echo "::error::Manifest contains legacy raw/branch update server URL on MokoGitea. Use the Gitea Pages URL instead (e.g. /{REPO}/updates.xml not /{REPO}/raw/branch/main/updates.xml)" - echo "$RAW_URLS" - exit 1 - fi - echo "Joomla manifest valid" - ;; - dolibarr) - MOD_FILE=$(find . -maxdepth 4 -name "mod*.class.php" ! -path "./.git/*" -exec grep -l 'extends DolibarrModules' {} \; 2>/dev/null | head -1) - if [ -z "$MOD_FILE" ]; then - echo "::error::No mod*.class.php found" - exit 1 - fi - echo "Dolibarr module: ${MOD_FILE}" - ;; - *) - echo "Generic platform — no manifest validation" - ;; - esac - - - name: Check update stream format - run: | - PLATFORM="${{ steps.platform.outputs.platform }}" - case "$PLATFORM" in - joomla) - if [ -f "updates.xml" ]; then - if command -v php &> /dev/null; then - php -r "libxml_use_internal_errors(true); \$x = simplexml_load_file('updates.xml'); if(!\$x){foreach(libxml_get_errors() as \$e) echo \$e->message; exit(1);}" || { echo "::error::updates.xml is malformed"; exit 1; } - fi - echo "updates.xml valid" - fi - ;; - dolibarr) - [ -f "update.txt" ] && echo "update.txt present" || echo "::warning::No update.txt" - ;; - esac - - - name: Check changelog has unreleased entries (PRs to main) - if: github.base_ref == 'main' - run: | - if [ ! -f "CHANGELOG.md" ]; then - echo "::error::CHANGELOG.md not found — required for releases" - exit 1 - fi - - # Extract content between [Unreleased] and next ## heading - ENTRIES=$(awk '/^## \[Unreleased\]/{found=1; next} /^## \[/{if(found) exit} found && /^- /{count++} END{print count+0}' CHANGELOG.md) - - if [ "$ENTRIES" -eq 0 ]; then - echo "::error::CHANGELOG.md has no entries under [Unreleased]. Add changelog entries before releasing." - echo "## Changelog Check: Failed" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "No entries found under \`[Unreleased]\` in CHANGELOG.md." >> $GITHUB_STEP_SUMMARY - echo "Add entries describing what changed before merging to main." >> $GITHUB_STEP_SUMMARY - exit 1 - fi - - echo "Changelog: ${ENTRIES} unreleased entries found" - echo "## Changelog Check: Passed" >> $GITHUB_STEP_SUMMARY - echo "${ENTRIES} entries under [Unreleased]" >> $GITHUB_STEP_SUMMARY - - - name: Validate Joomla language files - if: steps.platform.outputs.platform == 'joomla' - run: | - ERRORS=0 - WARNINGS=0 - - # Require both en-GB and en-US language directories - LANG_ROOT=$(find . -path "*/language" -type d -not -path "./.git/*" 2>/dev/null | head -1) - if [ -z "$LANG_ROOT" ]; then - echo "No language/ directory found — skipping" - exit 0 - fi - - if [ ! -d "$LANG_ROOT/en-GB" ]; then - echo "::error::Missing en-GB language directory (${LANG_ROOT}/en-GB)" - ERRORS=$((ERRORS + 1)) - fi - if [ ! -d "$LANG_ROOT/en-US" ]; then - echo "::error::Missing en-US language directory (${LANG_ROOT}/en-US)" - ERRORS=$((ERRORS + 1)) - fi - - # Check that en-GB and en-US have matching .ini files - if [ -d "$LANG_ROOT/en-GB" ] && [ -d "$LANG_ROOT/en-US" ]; then - for GB_INI in "$LANG_ROOT/en-GB"/*.ini; do - [ ! -f "$GB_INI" ] && continue - US_INI="$LANG_ROOT/en-US/$(basename "$GB_INI")" - if [ ! -f "$US_INI" ]; then - echo "::error::$(basename "$GB_INI") exists in en-GB but missing from en-US" - ERRORS=$((ERRORS + 1)) - fi - done - for US_INI in "$LANG_ROOT/en-US"/*.ini; do - [ ! -f "$US_INI" ] && continue - GB_INI="$LANG_ROOT/en-GB/$(basename "$US_INI")" - if [ ! -f "$GB_INI" ]; then - echo "::error::$(basename "$US_INI") exists in en-US but missing from en-GB" - ERRORS=$((ERRORS + 1)) - fi - done - fi - - # Find all .ini language files - INI_FILES=$(find . -path "*/language/*/*.ini" -not -path "./.git/*" 2>/dev/null) - if [ -z "$INI_FILES" ]; then - echo "No .ini language files found" - [ "$ERRORS" -gt 0 ] && exit 1 - exit 0 - fi - - echo "Found $(echo "$INI_FILES" | wc -l) language file(s)" - - for FILE in $INI_FILES; do - FNAME=$(basename "$FILE") - LINENUM=0 - SEEN_KEYS="" - - while IFS= read -r line || [ -n "$line" ]; do - LINENUM=$((LINENUM + 1)) - - # Skip empty lines and comments - [ -z "$line" ] && continue - echo "$line" | grep -qE '^\s*;' && continue - echo "$line" | grep -qE '^\s*$' && continue - - # Must match KEY="VALUE" format - if ! echo "$line" | grep -qE '^[A-Z_][A-Z0-9_]*=".*"$'; then - echo "::error file=${FILE},line=${LINENUM}::Malformed line: ${line}" - ERRORS=$((ERRORS + 1)) - continue - fi - - # Extract key and check for duplicates - KEY=$(echo "$line" | sed 's/=.*//') - if echo "$SEEN_KEYS" | grep -qx "$KEY"; then - echo "::error file=${FILE},line=${LINENUM}::Duplicate key: ${KEY}" - ERRORS=$((ERRORS + 1)) - fi - SEEN_KEYS="${SEEN_KEYS} - ${KEY}" - done < "$FILE" - - echo " ${FILE}: checked ${LINENUM} lines" - done - - # Cross-check en-GB vs en-US key consistency - GB_DIR=$(find . -path "*/language/en-GB" -type d -not -path "./.git/*" 2>/dev/null | head -1) - US_DIR=$(find . -path "*/language/en-US" -type d -not -path "./.git/*" 2>/dev/null | head -1) - - if [ -n "$GB_DIR" ] && [ -n "$US_DIR" ]; then - for GB_FILE in "$GB_DIR"/*.ini; do - [ ! -f "$GB_FILE" ] && continue - FNAME=$(basename "$GB_FILE") - US_FILE="$US_DIR/$FNAME" - [ ! -f "$US_FILE" ] && continue - - GB_KEYS=$(grep -oP '^[A-Z_][A-Z0-9_]*(?==)' "$GB_FILE" 2>/dev/null | sort) - US_KEYS=$(grep -oP '^[A-Z_][A-Z0-9_]*(?==)' "$US_FILE" 2>/dev/null | sort) - - # Keys in en-GB but not en-US - MISSING_US=$(comm -23 <(echo "$GB_KEYS") <(echo "$US_KEYS")) - if [ -n "$MISSING_US" ]; then - echo "::warning::Keys in en-GB/$FNAME but missing from en-US/$FNAME:" - echo "$MISSING_US" | while read -r k; do echo " - $k"; done - WARNINGS=$((WARNINGS + 1)) - fi - - # Keys in en-US but not en-GB - MISSING_GB=$(comm -13 <(echo "$GB_KEYS") <(echo "$US_KEYS")) - if [ -n "$MISSING_GB" ]; then - echo "::warning::Keys in en-US/$FNAME but missing from en-GB/$FNAME:" - echo "$MISSING_GB" | while read -r k; do echo " - $k"; done - WARNINGS=$((WARNINGS + 1)) - fi - done - fi - - { - echo "### Language File Validation" - echo "| Metric | Count |" - echo "|---|---|" - echo "| Files checked | $(echo "$INI_FILES" | wc -l) |" - echo "| Errors | ${ERRORS} |" - echo "| Warnings | ${WARNINGS} |" - } >> $GITHUB_STEP_SUMMARY - - if [ "$ERRORS" -gt 0 ]; then - echo "::error::Language validation failed with ${ERRORS} error(s)" - exit 1 - fi - echo "Language files: OK (${WARNINGS} warning(s))" - - - name: Check changelog has unreleased entry - run: | - if [ ! -f "CHANGELOG.md" ]; then - echo "::warning::No CHANGELOG.md found" - exit 0 - fi - # Check for content under [Unreleased] section - if ! grep -q "## \[Unreleased\]" CHANGELOG.md; then - echo "::error::CHANGELOG.md missing [Unreleased] section" - exit 1 - fi - # Check there's at least one entry (Added/Changed/Fixed/Removed) under Unreleased - UNRELEASED_CONTENT=$(sed -n '/## \[Unreleased\]/,/## \[/p' CHANGELOG.md | grep -cE '^\s*-\s' || true) - if [ "$UNRELEASED_CONTENT" -eq 0 ]; then - echo "::error::CHANGELOG.md [Unreleased] section has no entries. Add a changelog entry describing your changes." - echo "## Changelog Check: Failed" >> $GITHUB_STEP_SUMMARY - echo "The \`[Unreleased]\` section in CHANGELOG.md has no entries." >> $GITHUB_STEP_SUMMARY - echo "Add a line like \`- Description of your change\` under a heading (\`### Added\`, \`### Changed\`, \`### Fixed\`, etc.)" >> $GITHUB_STEP_SUMMARY - exit 1 - fi - echo "Changelog: ${UNRELEASED_CONTENT} entry/entries in [Unreleased]" - - - name: Verify package source - run: | - SOURCE_DIR="src" - [ ! -d "$SOURCE_DIR" ] && SOURCE_DIR="htdocs" - if [ ! -d "$SOURCE_DIR" ]; then - echo "::warning::No src/ or htdocs/ directory" - exit 0 - fi - FILE_COUNT=$(find "$SOURCE_DIR" -type f | wc -l) - echo "Source: ${FILE_COUNT} files" - [ "$FILE_COUNT" -gt 0 ] || { echo "::error::Source directory is empty"; exit 1; } - - # ── Pre-Release RC Build ───────────────────────────────────────────────── - pre-release: - name: Build RC Package - runs-on: ubuntu-latest - needs: [branch-policy, validate] - - steps: - - name: Trigger RC pre-release - env: - GA_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }} - REPO: ${{ github.repository }} - BRANCH: ${{ github.head_ref }} - GITEA_URL: ${{ vars.GITEA_URL || 'https://git.mokoconsulting.tech' }} - run: | - curl -s -X POST "${GITEA_URL}/api/v1/repos/${REPO}/actions/workflows/pre-release.yml/dispatches" -H "Authorization: token ${GITEA_TOKEN}" -H "Content-Type: application/json" -d "{\"ref\":\"${BRANCH}\",\"inputs\":{\"stability\":\"release-candidate\"}}" - echo "### Pre-Release" >> $GITHUB_STEP_SUMMARY - echo "Triggered RC build on branch \`${BRANCH}\`" >> $GITHUB_STEP_SUMMARY - - # ── Issue Reporter ────────────────────────────────────────────────────── - report-issues: - name: Report Issues - runs-on: ubuntu-latest - needs: [branch-policy, validate] - if: >- - always() && - needs.validate.result == 'failure' - - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - sparse-checkout: automation/ci-issue-reporter.sh - sparse-checkout-cone-mode: false - - - name: "File issue for PR validation failure" - env: - GITEA_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }} - GITEA_URL: ${{ vars.GITEA_URL || 'https://git.mokoconsulting.tech' }} - run: | - chmod +x automation/ci-issue-reporter.sh - ./automation/ci-issue-reporter.sh \ - --gate "PR Validation" \ - --workflow "PR Check" \ - --severity error \ - --details "PR validation failed (syntax, manifest, changelog, or source checks). See the CI run for the specific check that failed." +# Copyright (C) 2026 Moko Consulting +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# FILE INFORMATION +# DEFGROUP: Gitea.Workflow +# INGROUP: moko-platform.CI +# REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/moko-platform +# PATH: /templates/workflows/universal/pr-check.yml.template +# VERSION: 09.23.00 +# BRIEF: PR gate — branch policy + code validation before merge + +name: "Universal: PR Check" + +on: + pull_request: + types: [opened, synchronize, reopened, edited] + +permissions: + contents: read + pull-requests: write + +env: + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true + +jobs: + # ── Branch Policy ────────────────────────────────────────────────────── + branch-policy: + name: Branch Policy + runs-on: ubuntu-latest + steps: + - name: Check branch merge target + run: | + HEAD="${{ github.head_ref }}" + BASE="${{ github.base_ref }}" + + echo "PR: ${HEAD} → ${BASE}" + + ALLOWED=true + REASON="" + + case "$HEAD" in + feature/*|feat/*) + if [ "$BASE" != "dev" ]; then + ALLOWED=false + REASON="Feature branches must target 'dev', not '${BASE}'" + fi + ;; + fix/*|bugfix/*) + if [ "$BASE" != "dev" ]; then + ALLOWED=false + REASON="Fix branches must target 'dev', not '${BASE}'" + fi + ;; + patch/*) + if [ "$BASE" != "dev" ] && [ "$BASE" != "rc" ]; then + ALLOWED=false + REASON="Patch branches must target 'dev' or 'rc', not '${BASE}'" + fi + ;; + hotfix/*) + if [ "$BASE" != "dev" ] && [ "$BASE" != "main" ]; then + ALLOWED=false + REASON="Hotfix branches can only target 'dev' or 'main', not '${BASE}'" + fi + ;; + rc) + if [ "$BASE" != "main" ]; then + ALLOWED=false + REASON="RC branch can only merge into 'main', not '${BASE}'" + fi + ;; + dev) + if [ "$BASE" != "main" ]; then + ALLOWED=false + REASON="Dev branch can only merge into 'main', not '${BASE}'" + fi + ;; + esac + + if [ "$ALLOWED" = false ]; then + echo "::error::${REASON}" + echo "## Branch Policy Violation" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "${REASON}" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "### Allowed merge paths:" >> $GITHUB_STEP_SUMMARY + echo "- \`feature/*\` → \`dev\`" >> $GITHUB_STEP_SUMMARY + echo "- \`fix/*\` → \`dev\`" >> $GITHUB_STEP_SUMMARY + echo "- \`hotfix/*\` → \`dev\` or \`main\`" >> $GITHUB_STEP_SUMMARY + echo "- \`dev\` → \`main\`" >> $GITHUB_STEP_SUMMARY + echo "- \`rc/*\` → \`main\`" >> $GITHUB_STEP_SUMMARY + exit 1 + fi + + echo "Branch policy: OK (${HEAD} → ${BASE})" + echo "## Branch Policy: Passed" >> $GITHUB_STEP_SUMMARY + + # ── Code Validation ──────────────────────────────────────────────────── + validate: + name: Validate PR + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Check for merge conflict markers + run: | + CONFLICTS=$(grep -rn '<<<<<<< \|>>>>>>> \|^=======$' --include='*.php' --include='*.xml' --include='*.css' --include='*.js' --include='*.json' --include='*.md' --include='*.yml' --include='*.yaml' --include='*.ini' --include='*.txt' . 2>/dev/null | grep -v '.git/' || true) + if [ -n "$CONFLICTS" ]; then + echo "::error::Merge conflict markers found in source files" + echo "## Conflict Markers Found" >> $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + echo "$CONFLICTS" >> $GITHUB_STEP_SUMMARY + echo '```' >> $GITHUB_STEP_SUMMARY + exit 1 + fi + echo "No conflict markers found" + + - name: Detect platform + id: platform + run: | + # Read platform from XML manifest ( tag) or plain text fallback + PLATFORM=$(sed -n 's/.*\([^<]*\)<\/platform>.*/\1/p' .mokogitea/manifest.xml 2>/dev/null | head -1) + [ -z "$PLATFORM" ] && PLATFORM=$(cat .mokogitea/manifest.xml 2>/dev/null | tr -d '[:space:]') + [ -z "$PLATFORM" ] && PLATFORM="generic" + echo "platform=$PLATFORM" >> "$GITHUB_OUTPUT" + + - name: Setup PHP + if: steps.platform.outputs.platform == 'joomla' || steps.platform.outputs.platform == 'dolibarr' + run: | + if ! command -v php &> /dev/null; then + sudo apt-get update -qq + sudo apt-get install -y -qq php-cli php-mbstring php-xml >/dev/null 2>&1 + fi + + - name: PHP syntax check + if: steps.platform.outputs.platform == 'joomla' || steps.platform.outputs.platform == 'dolibarr' + run: | + ERRORS=0 + while IFS= read -r -d '' file; do + if ! php -l "$file" 2>&1 | grep -q "No syntax errors"; then + ERRORS=$((ERRORS + 1)) + fi + done < <(find . -name "*.php" -not -path "./.git/*" -not -path "./vendor/*" -print0) + echo "PHP lint: ${ERRORS} error(s)" + [ "$ERRORS" -eq 0 ] || { echo "::error::PHP syntax errors found"; exit 1; } + + - name: Joomla JEXEC guard check + if: steps.platform.outputs.platform == 'joomla' + run: | + ERRORS=0 + while IFS= read -r -d '' file; do + # Skip vendor, node_modules, and index.html stub files + case "$file" in ./vendor/*|./node_modules/*) continue ;; esac + # Check first 10 lines for JEXEC or JPATH guard + if ! head -20 "$file" | grep -qE "defined\s*\(\s*['\"](_JEXEC|JPATH_BASE|\\\\JPATH_PLATFORM)['\"]"; then + echo "::error file=${file}::Missing JEXEC guard: ${file}" + ERRORS=$((ERRORS + 1)) + fi + done < <(find . -name "*.php" -path "*/src/*" -not -path "./.git/*" -not -path "./vendor/*" -print0) + if [ "$ERRORS" -gt 0 ]; then + echo "::error::${ERRORS} PHP file(s) missing defined('_JEXEC') or die guard" + echo "## JEXEC Guard Check: Failed" >> $GITHUB_STEP_SUMMARY + echo "${ERRORS} file(s) in src/ are missing the Joomla execution guard." >> $GITHUB_STEP_SUMMARY + exit 1 + fi + echo "JEXEC guard: OK" + + - name: Joomla directory listing protection + if: steps.platform.outputs.platform == 'joomla' + run: | + MISSING=0 + SOURCE_DIR="src" + [ ! -d "$SOURCE_DIR" ] && exit 0 + while IFS= read -r dir; do + if [ ! -f "${dir}/index.html" ]; then + echo "::warning::Missing index.html in ${dir} (directory listing protection)" + MISSING=$((MISSING + 1)) + fi + done < <(find "$SOURCE_DIR" -type d -not -path "./.git/*" -not -path "*/vendor/*" -not -path "*/node_modules/*") + if [ "$MISSING" -gt 0 ]; then + echo "## Directory Protection" >> $GITHUB_STEP_SUMMARY + echo "${MISSING} director(ies) missing index.html" >> $GITHUB_STEP_SUMMARY + fi + echo "Directory protection: ${MISSING} missing (advisory)" + + - name: Joomla script file and asset checks + if: steps.platform.outputs.platform == 'joomla' + run: | + ERRORS=0 + MANIFEST=$(find . -maxdepth 3 -name "*.xml" ! -path "./.git/*" -exec grep -l '/dev/null | head -1) + [ -z "$MANIFEST" ] && exit 0 + MANIFEST_DIR=$(dirname "$MANIFEST") + + # Check scriptfile exists if declared + SCRIPTFILE=$(sed -n 's/.*\([^<]*\)<\/scriptfile>.*/\1/p' "$MANIFEST" 2>/dev/null) + if [ -n "$SCRIPTFILE" ]; then + if [ ! -f "${MANIFEST_DIR}/${SCRIPTFILE}" ]; then + echo "::error::Manifest declares ${SCRIPTFILE} but file not found at ${MANIFEST_DIR}/${SCRIPTFILE}" + ERRORS=$((ERRORS + 1)) + else + echo "Script file: ${MANIFEST_DIR}/${SCRIPTFILE} (OK)" + fi + fi + + # Require joomla.asset.json and validate it + ASSET_JSON=$(find "$MANIFEST_DIR" -name "joomla.asset.json" -not -path "./.git/*" 2>/dev/null | head -1) + if [ -z "$ASSET_JSON" ]; then + echo "::error::joomla.asset.json not found — Joomla asset system is required" + ERRORS=$((ERRORS + 1)) + else + if command -v php &> /dev/null; then + php -r "json_decode(file_get_contents('$ASSET_JSON')); if(json_last_error()!==JSON_ERROR_NONE){echo json_last_error_msg();exit(1);}" 2>&1 || { + echo "::error::joomla.asset.json is not valid JSON" + ERRORS=$((ERRORS + 1)) + } + fi + echo "joomla.asset.json: valid" + fi + + # Validate all XML files in src/ are well-formed + XML_ERRORS=0 + if command -v php &> /dev/null; then + while IFS= read -r -d '' xmlfile; do + if ! php -r "libxml_use_internal_errors(true); \$x = simplexml_load_file('$xmlfile'); if(!\$x){foreach(libxml_get_errors() as \$e) echo trim(\$e->message) . ' in $xmlfile'; exit(1);}" 2>&1; then + XML_ERRORS=$((XML_ERRORS + 1)) + fi + done < <(find "$MANIFEST_DIR" -name "*.xml" -not -path "./.git/*" -print0) + fi + if [ "$XML_ERRORS" -gt 0 ]; then + echo "::error::${XML_ERRORS} XML file(s) are malformed" + ERRORS=$((ERRORS + 1)) + else + echo "XML well-formedness: OK" + fi + + [ "$ERRORS" -gt 0 ] && exit 1 + echo "Joomla asset checks: OK" + + - name: Validate platform manifest + run: | + PLATFORM="${{ steps.platform.outputs.platform }}" + case "$PLATFORM" in + joomla) + MANIFEST=$(find . -maxdepth 3 -name "*.xml" ! -path "./.git/*" -exec grep -l '/dev/null | head -1) + if [ -z "$MANIFEST" ]; then + echo "::warning::No Joomla manifest found (Suite site)" + exit 0 + fi + echo "Manifest: ${MANIFEST}" + if command -v php &> /dev/null; then + php -r "libxml_use_internal_errors(true); \$x = simplexml_load_file('$MANIFEST'); if(!\$x){foreach(libxml_get_errors() as \$e) echo \$e->message; exit(1);}" || { echo "::error::Manifest XML is malformed"; exit 1; } + fi + for ELEMENT in name version description; do + grep -q "<${ELEMENT}>" "$MANIFEST" || { echo "::error::Missing <${ELEMENT}> in manifest"; exit 1; } + done + # Block legacy raw/branch update server URLs on MokoGitea + RAW_URLS=$(grep -n 'raw/branch' "$MANIFEST" | grep -i 'mokoconsulting\|mokogitea\|git\.mokoconsulting\.tech' || true) + if [ -n "$RAW_URLS" ]; then + echo "::error::Manifest contains legacy raw/branch update server URL on MokoGitea. Use the Gitea Pages URL instead (e.g. /{REPO}/updates.xml not /{REPO}/raw/branch/main/updates.xml)" + echo "$RAW_URLS" + exit 1 + fi + echo "Joomla manifest valid" + ;; + dolibarr) + MOD_FILE=$(find . -maxdepth 4 -name "mod*.class.php" ! -path "./.git/*" -exec grep -l 'extends DolibarrModules' {} \; 2>/dev/null | head -1) + if [ -z "$MOD_FILE" ]; then + echo "::error::No mod*.class.php found" + exit 1 + fi + echo "Dolibarr module: ${MOD_FILE}" + ;; + *) + echo "Generic platform — no manifest validation" + ;; + esac + + - name: Check update stream format + run: | + PLATFORM="${{ steps.platform.outputs.platform }}" + case "$PLATFORM" in + joomla) + if [ -f "updates.xml" ]; then + if command -v php &> /dev/null; then + php -r "libxml_use_internal_errors(true); \$x = simplexml_load_file('updates.xml'); if(!\$x){foreach(libxml_get_errors() as \$e) echo \$e->message; exit(1);}" || { echo "::error::updates.xml is malformed"; exit 1; } + fi + echo "updates.xml valid" + fi + ;; + dolibarr) + [ -f "update.txt" ] && echo "update.txt present" || echo "::warning::No update.txt" + ;; + esac + + - name: Check changelog has unreleased entries (PRs to main) + if: github.base_ref == 'main' + run: | + if [ ! -f "CHANGELOG.md" ]; then + echo "::error::CHANGELOG.md not found — required for releases" + exit 1 + fi + + # Extract content between [Unreleased] and next ## heading + ENTRIES=$(awk '/^## \[Unreleased\]/{found=1; next} /^## \[/{if(found) exit} found && /^- /{count++} END{print count+0}' CHANGELOG.md) + + if [ "$ENTRIES" -eq 0 ]; then + echo "::error::CHANGELOG.md has no entries under [Unreleased]. Add changelog entries before releasing." + echo "## Changelog Check: Failed" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "No entries found under \`[Unreleased]\` in CHANGELOG.md." >> $GITHUB_STEP_SUMMARY + echo "Add entries describing what changed before merging to main." >> $GITHUB_STEP_SUMMARY + exit 1 + fi + + echo "Changelog: ${ENTRIES} unreleased entries found" + echo "## Changelog Check: Passed" >> $GITHUB_STEP_SUMMARY + echo "${ENTRIES} entries under [Unreleased]" >> $GITHUB_STEP_SUMMARY + + - name: Validate Joomla language files + if: steps.platform.outputs.platform == 'joomla' + run: | + ERRORS=0 + WARNINGS=0 + + # Require both en-GB and en-US language directories + LANG_ROOT=$(find . -path "*/language" -type d -not -path "./.git/*" 2>/dev/null | head -1) + if [ -z "$LANG_ROOT" ]; then + echo "No language/ directory found — skipping" + exit 0 + fi + + if [ ! -d "$LANG_ROOT/en-GB" ]; then + echo "::error::Missing en-GB language directory (${LANG_ROOT}/en-GB)" + ERRORS=$((ERRORS + 1)) + fi + if [ ! -d "$LANG_ROOT/en-US" ]; then + echo "::error::Missing en-US language directory (${LANG_ROOT}/en-US)" + ERRORS=$((ERRORS + 1)) + fi + + # Check that en-GB and en-US have matching .ini files + if [ -d "$LANG_ROOT/en-GB" ] && [ -d "$LANG_ROOT/en-US" ]; then + for GB_INI in "$LANG_ROOT/en-GB"/*.ini; do + [ ! -f "$GB_INI" ] && continue + US_INI="$LANG_ROOT/en-US/$(basename "$GB_INI")" + if [ ! -f "$US_INI" ]; then + echo "::error::$(basename "$GB_INI") exists in en-GB but missing from en-US" + ERRORS=$((ERRORS + 1)) + fi + done + for US_INI in "$LANG_ROOT/en-US"/*.ini; do + [ ! -f "$US_INI" ] && continue + GB_INI="$LANG_ROOT/en-GB/$(basename "$US_INI")" + if [ ! -f "$GB_INI" ]; then + echo "::error::$(basename "$US_INI") exists in en-US but missing from en-GB" + ERRORS=$((ERRORS + 1)) + fi + done + fi + + # Find all .ini language files + INI_FILES=$(find . -path "*/language/*/*.ini" -not -path "./.git/*" 2>/dev/null) + if [ -z "$INI_FILES" ]; then + echo "No .ini language files found" + [ "$ERRORS" -gt 0 ] && exit 1 + exit 0 + fi + + echo "Found $(echo "$INI_FILES" | wc -l) language file(s)" + + for FILE in $INI_FILES; do + FNAME=$(basename "$FILE") + LINENUM=0 + SEEN_KEYS="" + + while IFS= read -r line || [ -n "$line" ]; do + LINENUM=$((LINENUM + 1)) + + # Skip empty lines and comments + [ -z "$line" ] && continue + echo "$line" | grep -qE '^\s*;' && continue + echo "$line" | grep -qE '^\s*$' && continue + + # Must match KEY="VALUE" format + if ! echo "$line" | grep -qE '^[A-Z_][A-Z0-9_]*=".*"$'; then + echo "::error file=${FILE},line=${LINENUM}::Malformed line: ${line}" + ERRORS=$((ERRORS + 1)) + continue + fi + + # Extract key and check for duplicates + KEY=$(echo "$line" | sed 's/=.*//') + if echo "$SEEN_KEYS" | grep -qx "$KEY"; then + echo "::error file=${FILE},line=${LINENUM}::Duplicate key: ${KEY}" + ERRORS=$((ERRORS + 1)) + fi + SEEN_KEYS="${SEEN_KEYS} + ${KEY}" + done < "$FILE" + + echo " ${FILE}: checked ${LINENUM} lines" + done + + # Cross-check en-GB vs en-US key consistency + GB_DIR=$(find . -path "*/language/en-GB" -type d -not -path "./.git/*" 2>/dev/null | head -1) + US_DIR=$(find . -path "*/language/en-US" -type d -not -path "./.git/*" 2>/dev/null | head -1) + + if [ -n "$GB_DIR" ] && [ -n "$US_DIR" ]; then + for GB_FILE in "$GB_DIR"/*.ini; do + [ ! -f "$GB_FILE" ] && continue + FNAME=$(basename "$GB_FILE") + US_FILE="$US_DIR/$FNAME" + [ ! -f "$US_FILE" ] && continue + + GB_KEYS=$(grep -oP '^[A-Z_][A-Z0-9_]*(?==)' "$GB_FILE" 2>/dev/null | sort) + US_KEYS=$(grep -oP '^[A-Z_][A-Z0-9_]*(?==)' "$US_FILE" 2>/dev/null | sort) + + # Keys in en-GB but not en-US + MISSING_US=$(comm -23 <(echo "$GB_KEYS") <(echo "$US_KEYS")) + if [ -n "$MISSING_US" ]; then + echo "::warning::Keys in en-GB/$FNAME but missing from en-US/$FNAME:" + echo "$MISSING_US" | while read -r k; do echo " - $k"; done + WARNINGS=$((WARNINGS + 1)) + fi + + # Keys in en-US but not en-GB + MISSING_GB=$(comm -13 <(echo "$GB_KEYS") <(echo "$US_KEYS")) + if [ -n "$MISSING_GB" ]; then + echo "::warning::Keys in en-US/$FNAME but missing from en-GB/$FNAME:" + echo "$MISSING_GB" | while read -r k; do echo " - $k"; done + WARNINGS=$((WARNINGS + 1)) + fi + done + fi + + { + echo "### Language File Validation" + echo "| Metric | Count |" + echo "|---|---|" + echo "| Files checked | $(echo "$INI_FILES" | wc -l) |" + echo "| Errors | ${ERRORS} |" + echo "| Warnings | ${WARNINGS} |" + } >> $GITHUB_STEP_SUMMARY + + if [ "$ERRORS" -gt 0 ]; then + echo "::error::Language validation failed with ${ERRORS} error(s)" + exit 1 + fi + echo "Language files: OK (${WARNINGS} warning(s))" + + - name: Check changelog has unreleased entry + run: | + if [ ! -f "CHANGELOG.md" ]; then + echo "::warning::No CHANGELOG.md found" + exit 0 + fi + # Check for content under [Unreleased] section + if ! grep -q "## \[Unreleased\]" CHANGELOG.md; then + echo "::error::CHANGELOG.md missing [Unreleased] section" + exit 1 + fi + # Check there's at least one entry (Added/Changed/Fixed/Removed) under Unreleased + UNRELEASED_CONTENT=$(sed -n '/## \[Unreleased\]/,/## \[/p' CHANGELOG.md | grep -cE '^\s*-\s' || true) + if [ "$UNRELEASED_CONTENT" -eq 0 ]; then + echo "::error::CHANGELOG.md [Unreleased] section has no entries. Add a changelog entry describing your changes." + echo "## Changelog Check: Failed" >> $GITHUB_STEP_SUMMARY + echo "The \`[Unreleased]\` section in CHANGELOG.md has no entries." >> $GITHUB_STEP_SUMMARY + echo "Add a line like \`- Description of your change\` under a heading (\`### Added\`, \`### Changed\`, \`### Fixed\`, etc.)" >> $GITHUB_STEP_SUMMARY + exit 1 + fi + echo "Changelog: ${UNRELEASED_CONTENT} entry/entries in [Unreleased]" + + - name: Verify package source + run: | + SOURCE_DIR="src" + [ ! -d "$SOURCE_DIR" ] && SOURCE_DIR="htdocs" + if [ ! -d "$SOURCE_DIR" ]; then + echo "::warning::No src/ or htdocs/ directory" + exit 0 + fi + FILE_COUNT=$(find "$SOURCE_DIR" -type f | wc -l) + echo "Source: ${FILE_COUNT} files" + [ "$FILE_COUNT" -gt 0 ] || { echo "::error::Source directory is empty"; exit 1; } + + # ── Pre-Release RC Build ───────────────────────────────────────────────── + pre-release: + name: Build RC Package + runs-on: ubuntu-latest + needs: [branch-policy, validate] + + steps: + - name: Trigger RC pre-release + env: + GA_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }} + REPO: ${{ github.repository }} + BRANCH: ${{ github.head_ref }} + GITEA_URL: ${{ vars.GITEA_URL || 'https://git.mokoconsulting.tech' }} + run: | + curl -s -X POST "${GITEA_URL}/api/v1/repos/${REPO}/actions/workflows/pre-release.yml/dispatches" -H "Authorization: token ${GITEA_TOKEN}" -H "Content-Type: application/json" -d "{\"ref\":\"${BRANCH}\",\"inputs\":{\"stability\":\"release-candidate\"}}" + echo "### Pre-Release" >> $GITHUB_STEP_SUMMARY + echo "Triggered RC build on branch \`${BRANCH}\`" >> $GITHUB_STEP_SUMMARY + + # ── Issue Reporter ────────────────────────────────────────────────────── + report-issues: + name: Report Issues + runs-on: ubuntu-latest + needs: [branch-policy, validate] + if: >- + always() && + needs.validate.result == 'failure' + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + sparse-checkout: automation/ci-issue-reporter.sh + sparse-checkout-cone-mode: false + + - name: "File issue for PR validation failure" + env: + GITEA_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }} + GITEA_URL: ${{ vars.GITEA_URL || 'https://git.mokoconsulting.tech' }} + run: | + chmod +x automation/ci-issue-reporter.sh + ./automation/ci-issue-reporter.sh \ + --gate "PR Validation" \ + --workflow "PR Check" \ + --severity error \ + --details "PR validation failed (syntax, manifest, changelog, or source checks). See the CI run for the specific check that failed." diff --git a/.mokogitea/workflows/pre-release.yml b/.mokogitea/workflows/pre-release.yml index 9615a4ea..86908c20 100644 --- a/.mokogitea/workflows/pre-release.yml +++ b/.mokogitea/workflows/pre-release.yml @@ -1,243 +1,243 @@ -# Copyright (C) 2026 Moko Consulting -# -# SPDX-License-Identifier: GPL-3.0-or-later -# -# FILE INFORMATION -# DEFGROUP: Gitea.Workflow -# INGROUP: moko-platform.Release -# REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform -# PATH: /templates/workflows/universal/pre-release.yml.template -# VERSION: 05.01.00 -# BRIEF: Manual pre-release -- builds dev/alpha/beta/rc packages from any branch - -name: "Universal: Pre-Release" - -on: - pull_request: - types: [closed] - branches: - - dev - pull_request_target: - types: [synchronize, opened, reopened] - branches: - - main - workflow_dispatch: - inputs: - stability: - description: 'Pre-release channel' - required: true - type: choice - options: - - development - - alpha - - beta - - release-candidate - -permissions: - contents: write - -env: - GITEA_URL: ${{ vars.GITEA_URL || 'https://git.mokoconsulting.tech' }} - GITEA_ORG: ${{ vars.GITEA_ORG || github.repository_owner }} - GITEA_REPO: ${{ vars.GITEA_REPO || github.event.repository.name }} - -jobs: - build: - name: "Build Pre-Release (${{ inputs.stability || 'development' }})" - runs-on: release - if: >- - github.event_name == 'workflow_dispatch' || - (github.event_name == 'pull_request' && github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'dev') || - (github.event_name == 'pull_request_target' && github.event.pull_request.base.ref == 'main') - - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - token: ${{ secrets.MOKOGITEA_TOKEN }} - ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || '' }} - - - name: Setup moko-platform tools - env: - MOKO_CLONE_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }} - MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting - run: | - # Use pre-installed /opt/moko-platform if available (updated by cron every 6h) - if [ -f /opt/moko-platform/cli/version_bump.php ] && [ -f /opt/moko-platform/cli/manifest_element.php ] && [ -f /opt/moko-platform/vendor/autoload.php ]; then - echo Using pre-installed /opt/moko-platform - echo MOKO_CLI=/opt/moko-platform/cli >> $GITHUB_ENV - else - echo Falling back to fresh clone - if ! command -v composer > /dev/null 2>&1; then - sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer > /dev/null 2>&1 - fi - rm -rf /tmp/moko-platform-api - CLONE_URL=https://x-access-token:${MOKO_CLONE_TOKEN}@${MOKO_CLONE_HOST}/moko-platform.git - git clone --depth 1 --branch main --quiet $CLONE_URL /tmp/moko-platform-api - cd /tmp/moko-platform-api && composer install --no-dev --no-interaction --quiet - echo MOKO_CLI=/tmp/moko-platform-api/cli >> $GITHUB_ENV - fi - - - name: Detect platform - id: platform - run: | - php ${MOKO_CLI}/manifest_read.php --path . --github-output - - - name: Resolve metadata and bump version - id: meta - run: | - # Auto-detect stability: RC for PRs targeting main, else use input or default to development - if [ "${{ github.event_name }}" = "pull_request_target" ] && [ "${{ github.event.pull_request.base.ref }}" = "main" ]; then - STABILITY="release-candidate" - else - STABILITY="${{ inputs.stability || 'development' }}" - fi - - case "$STABILITY" in - development) SUFFIX="-dev"; TAG="development" ;; - alpha) SUFFIX="-alpha"; TAG="alpha" ;; - beta) SUFFIX="-beta"; TAG="beta" ;; - release-candidate) SUFFIX="-rc"; TAG="release-candidate" ;; - esac - - # Bump version via CLI: patch for dev/alpha/beta, minor for RC - case "$STABILITY" in - release-candidate) BUMP="minor" ;; - *) BUMP="patch" ;; - esac - - php ${MOKO_CLI}/version_bump.php --path . $([ "$BUMP" = "minor" ] && echo "--minor") 2>/dev/null || true - - # Set stability suffix and verify consistency - VERSION=$(php ${MOKO_CLI}/version_read.php --path . 2>/dev/null || echo "00.00.01") - VERSION=$(echo "$VERSION" | sed 's/-\(dev\|alpha\|beta\|rc\)$//') - - php ${MOKO_CLI}/version_set_platform.php \ - --path . --version "$VERSION" --branch "${{ github.ref_name }}" --stability "$STABILITY" 2>/dev/null || true - php ${MOKO_CLI}/version_check.php --path . --fix 2>/dev/null || true - - # Ensure licensing tags (updateservers, dlid) if enabled in manifest.xml - php ${MOKO_CLI}/manifest_licensing.php --path . --fix 2>/dev/null || true - - # Append suffix for output - if [ -n "$SUFFIX" ]; then - VERSION="${VERSION}${SUFFIX}" - fi - - # Commit version bump - git config --local user.email "gitea-actions[bot]@mokoconsulting.tech" - git config --local user.name "gitea-actions[bot]" - git remote set-url origin "https://x-access-token:${{ secrets.MOKOGITEA_TOKEN }}@git.mokoconsulting.tech/${{ github.repository }}.git" - git add -A - git diff --cached --quiet || { - git commit -m "chore(version): pre-release bump to ${VERSION} [skip ci]" - git push origin HEAD 2>&1 - } - - # Auto-detect element via manifest_element.php - php ${MOKO_CLI}/manifest_element.php \ - --path . --version "$VERSION" --stability "$STABILITY" \ - --repo "${GITEA_REPO}" --github-output - - # Read back element outputs - EXT_ELEMENT=$(grep '^ext_element=' "$GITHUB_OUTPUT" | tail -1 | cut -d= -f2) - ZIP_NAME=$(grep '^zip_name=' "$GITHUB_OUTPUT" | tail -1 | cut -d= -f2) - [ -z "$EXT_ELEMENT" ] && EXT_ELEMENT=$(echo "${GITEA_REPO}" | tr '[:upper:]' '[:lower:]' | tr -d ' -') - [ -z "$ZIP_NAME" ] && ZIP_NAME="${EXT_ELEMENT}-${VERSION}.zip" - - echo "version=${VERSION}" >> "$GITHUB_OUTPUT" - echo "stability=${STABILITY}" >> "$GITHUB_OUTPUT" - echo "suffix=${SUFFIX}" >> "$GITHUB_OUTPUT" - echo "tag=${TAG}" >> "$GITHUB_OUTPUT" - echo "zip_name=${ZIP_NAME}" >> "$GITHUB_OUTPUT" - echo "ext_element=${EXT_ELEMENT}" >> "$GITHUB_OUTPUT" - - echo "=== Pre-Release: ${EXT_ELEMENT} ${VERSION}${SUFFIX} ===" - - - name: Create release - id: release - run: | - TAG="${{ steps.meta.outputs.tag }}" - VERSION="${{ steps.meta.outputs.version }}" - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - php ${MOKO_CLI}/release_create.php \ - --path . --version "$VERSION" --tag "$TAG" \ - --token "${{ secrets.MOKOGITEA_TOKEN }}" --api-base "$API_BASE" \ - --repo "${GITEA_REPO}" --branch dev --prerelease - - - name: Update release notes from CHANGELOG.md - run: | - TAG="${{ steps.meta.outputs.tag }}" - VERSION="${{ steps.meta.outputs.version }}" - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - - # Extract [Unreleased] section from changelog (everything between [Unreleased] and next ## heading) - if [ -f "CHANGELOG.md" ]; then - NOTES=$(awk '/^## \[Unreleased\]/{found=1; next} /^## \[/{if(found) exit} found{print}' CHANGELOG.md) - [ -z "$NOTES" ] && NOTES="Release ${VERSION}" - else - NOTES="Release ${VERSION}" - fi - - # Update release body via API - RELEASE_ID=$(curl -sf -H "Authorization: token ${{ secrets.MOKOGITEA_TOKEN }}" \ - "${API_BASE}/releases/tags/${TAG}" | python3 -c "import json,sys; print(json.load(sys.stdin).get('id',''))" 2>/dev/null || true) - - if [ -n "$RELEASE_ID" ]; then - python3 -c " - import json, urllib.request - body = open('/dev/stdin').read() - payload = json.dumps({'body': body}).encode() - req = urllib.request.Request( - '${API_BASE}/releases/${RELEASE_ID}', - data=payload, method='PATCH', - headers={ - 'Authorization': 'token ${{ secrets.MOKOGITEA_TOKEN }}', - 'Content-Type': 'application/json' - }) - urllib.request.urlopen(req) - " <<< "$NOTES" - echo "Release notes updated from CHANGELOG.md" - fi - - - name: Build package and upload - id: package - run: | - VERSION="${{ steps.meta.outputs.version }}" - TAG="${{ steps.meta.outputs.tag }}" - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - php ${MOKO_CLI}/release_package.php \ - --path . --version "$VERSION" --tag "$TAG" \ - --token "${{ secrets.MOKOGITEA_TOKEN }}" --api-base "$API_BASE" \ - --repo "${GITEA_REPO}" --output /tmp || true - - # updates.xml is generated dynamically by MokoGitea license server - # No need to build, commit, or sync updates.xml from workflows - - - name: "Delete lesser pre-release channels (cascade)" - continue-on-error: true - run: | - API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" - TOKEN="${{ secrets.MOKOGITEA_TOKEN }}" - - php ${MOKO_CLI}/release_cascade.php \ - --stability "${{ steps.meta.outputs.stability }}" \ - --token "${TOKEN}" \ - --api-base "${API_BASE}" - - - name: Summary - if: always() - run: | - VERSION="${{ steps.meta.outputs.version }}" - STABILITY="${{ steps.meta.outputs.stability }}" - ZIP_NAME="${{ steps.meta.outputs.zip_name }}" - SHA256="${{ steps.package.outputs.sha256_zip }}" - echo "## Pre-Release Complete" >> $GITHUB_STEP_SUMMARY - echo "" >> $GITHUB_STEP_SUMMARY - echo "| Field | Value |" >> $GITHUB_STEP_SUMMARY - echo "|-------|-------|" >> $GITHUB_STEP_SUMMARY - echo "| Version | \`${VERSION}\` |" >> $GITHUB_STEP_SUMMARY - echo "| Channel | ${STABILITY} |" >> $GITHUB_STEP_SUMMARY - echo "| Package | \`${ZIP_NAME}\` |" >> $GITHUB_STEP_SUMMARY - echo "| SHA-256 | \`${SHA256:-n/a}\` |" >> $GITHUB_STEP_SUMMARY +# Copyright (C) 2026 Moko Consulting +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# FILE INFORMATION +# DEFGROUP: Gitea.Workflow +# INGROUP: moko-platform.Release +# REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform +# PATH: /templates/workflows/universal/pre-release.yml.template +# VERSION: 05.01.00 +# BRIEF: Manual pre-release -- builds dev/alpha/beta/rc packages from any branch + +name: "Universal: Pre-Release" + +on: + pull_request: + types: [closed] + branches: + - dev + pull_request_target: + types: [synchronize, opened, reopened] + branches: + - main + workflow_dispatch: + inputs: + stability: + description: 'Pre-release channel' + required: true + type: choice + options: + - development + - alpha + - beta + - release-candidate + +permissions: + contents: write + +env: + GITEA_URL: ${{ vars.GITEA_URL || 'https://git.mokoconsulting.tech' }} + GITEA_ORG: ${{ vars.GITEA_ORG || github.repository_owner }} + GITEA_REPO: ${{ vars.GITEA_REPO || github.event.repository.name }} + +jobs: + build: + name: "Build Pre-Release (${{ inputs.stability || 'development' }})" + runs-on: release + if: >- + github.event_name == 'workflow_dispatch' || + (github.event_name == 'pull_request' && github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'dev') || + (github.event_name == 'pull_request_target' && github.event.pull_request.base.ref == 'main') + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.MOKOGITEA_TOKEN }} + ref: ${{ github.event_name == 'pull_request_target' && github.event.pull_request.head.sha || '' }} + + - name: Setup moko-platform tools + env: + MOKO_CLONE_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }} + MOKO_CLONE_HOST: git.mokoconsulting.tech/MokoConsulting + run: | + # Use pre-installed /opt/moko-platform if available (updated by cron every 6h) + if [ -f /opt/moko-platform/cli/version_bump.php ] && [ -f /opt/moko-platform/cli/manifest_element.php ] && [ -f /opt/moko-platform/vendor/autoload.php ]; then + echo Using pre-installed /opt/moko-platform + echo MOKO_CLI=/opt/moko-platform/cli >> $GITHUB_ENV + else + echo Falling back to fresh clone + if ! command -v composer > /dev/null 2>&1; then + sudo apt-get update -qq && sudo apt-get install -y -qq php-cli php-mbstring php-xml php-zip php-curl composer > /dev/null 2>&1 + fi + rm -rf /tmp/moko-platform-api + CLONE_URL=https://x-access-token:${MOKO_CLONE_TOKEN}@${MOKO_CLONE_HOST}/moko-platform.git + git clone --depth 1 --branch main --quiet $CLONE_URL /tmp/moko-platform-api + cd /tmp/moko-platform-api && composer install --no-dev --no-interaction --quiet + echo MOKO_CLI=/tmp/moko-platform-api/cli >> $GITHUB_ENV + fi + + - name: Detect platform + id: platform + run: | + php ${MOKO_CLI}/manifest_read.php --path . --github-output + + - name: Resolve metadata and bump version + id: meta + run: | + # Auto-detect stability: RC for PRs targeting main, else use input or default to development + if [ "${{ github.event_name }}" = "pull_request_target" ] && [ "${{ github.event.pull_request.base.ref }}" = "main" ]; then + STABILITY="release-candidate" + else + STABILITY="${{ inputs.stability || 'development' }}" + fi + + case "$STABILITY" in + development) SUFFIX="-dev"; TAG="development" ;; + alpha) SUFFIX="-alpha"; TAG="alpha" ;; + beta) SUFFIX="-beta"; TAG="beta" ;; + release-candidate) SUFFIX="-rc"; TAG="release-candidate" ;; + esac + + # Bump version via CLI: patch for dev/alpha/beta, minor for RC + case "$STABILITY" in + release-candidate) BUMP="minor" ;; + *) BUMP="patch" ;; + esac + + php ${MOKO_CLI}/version_bump.php --path . $([ "$BUMP" = "minor" ] && echo "--minor") 2>/dev/null || true + + # Set stability suffix and verify consistency + VERSION=$(php ${MOKO_CLI}/version_read.php --path . 2>/dev/null || echo "00.00.01") + VERSION=$(echo "$VERSION" | sed 's/-\(dev\|alpha\|beta\|rc\)$//') + + php ${MOKO_CLI}/version_set_platform.php \ + --path . --version "$VERSION" --branch "${{ github.ref_name }}" --stability "$STABILITY" 2>/dev/null || true + php ${MOKO_CLI}/version_check.php --path . --fix 2>/dev/null || true + + # Ensure licensing tags (updateservers, dlid) if enabled in manifest.xml + php ${MOKO_CLI}/manifest_licensing.php --path . --fix 2>/dev/null || true + + # Append suffix for output + if [ -n "$SUFFIX" ]; then + VERSION="${VERSION}${SUFFIX}" + fi + + # Commit version bump + git config --local user.email "gitea-actions[bot]@mokoconsulting.tech" + git config --local user.name "gitea-actions[bot]" + git remote set-url origin "https://x-access-token:${{ secrets.MOKOGITEA_TOKEN }}@git.mokoconsulting.tech/${{ github.repository }}.git" + git add -A + git diff --cached --quiet || { + git commit -m "chore(version): pre-release bump to ${VERSION} [skip ci]" + git push origin HEAD 2>&1 + } + + # Auto-detect element via manifest_element.php + php ${MOKO_CLI}/manifest_element.php \ + --path . --version "$VERSION" --stability "$STABILITY" \ + --repo "${GITEA_REPO}" --github-output + + # Read back element outputs + EXT_ELEMENT=$(grep '^ext_element=' "$GITHUB_OUTPUT" | tail -1 | cut -d= -f2) + ZIP_NAME=$(grep '^zip_name=' "$GITHUB_OUTPUT" | tail -1 | cut -d= -f2) + [ -z "$EXT_ELEMENT" ] && EXT_ELEMENT=$(echo "${GITEA_REPO}" | tr '[:upper:]' '[:lower:]' | tr -d ' -') + [ -z "$ZIP_NAME" ] && ZIP_NAME="${EXT_ELEMENT}-${VERSION}.zip" + + echo "version=${VERSION}" >> "$GITHUB_OUTPUT" + echo "stability=${STABILITY}" >> "$GITHUB_OUTPUT" + echo "suffix=${SUFFIX}" >> "$GITHUB_OUTPUT" + echo "tag=${TAG}" >> "$GITHUB_OUTPUT" + echo "zip_name=${ZIP_NAME}" >> "$GITHUB_OUTPUT" + echo "ext_element=${EXT_ELEMENT}" >> "$GITHUB_OUTPUT" + + echo "=== Pre-Release: ${EXT_ELEMENT} ${VERSION}${SUFFIX} ===" + + - name: Create release + id: release + run: | + TAG="${{ steps.meta.outputs.tag }}" + VERSION="${{ steps.meta.outputs.version }}" + API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" + php ${MOKO_CLI}/release_create.php \ + --path . --version "$VERSION" --tag "$TAG" \ + --token "${{ secrets.MOKOGITEA_TOKEN }}" --api-base "$API_BASE" \ + --repo "${GITEA_REPO}" --branch dev --prerelease + + - name: Update release notes from CHANGELOG.md + run: | + TAG="${{ steps.meta.outputs.tag }}" + VERSION="${{ steps.meta.outputs.version }}" + API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" + + # Extract [Unreleased] section from changelog (everything between [Unreleased] and next ## heading) + if [ -f "CHANGELOG.md" ]; then + NOTES=$(awk '/^## \[Unreleased\]/{found=1; next} /^## \[/{if(found) exit} found{print}' CHANGELOG.md) + [ -z "$NOTES" ] && NOTES="Release ${VERSION}" + else + NOTES="Release ${VERSION}" + fi + + # Update release body via API + RELEASE_ID=$(curl -sf -H "Authorization: token ${{ secrets.MOKOGITEA_TOKEN }}" \ + "${API_BASE}/releases/tags/${TAG}" | python3 -c "import json,sys; print(json.load(sys.stdin).get('id',''))" 2>/dev/null || true) + + if [ -n "$RELEASE_ID" ]; then + python3 -c " + import json, urllib.request + body = open('/dev/stdin').read() + payload = json.dumps({'body': body}).encode() + req = urllib.request.Request( + '${API_BASE}/releases/${RELEASE_ID}', + data=payload, method='PATCH', + headers={ + 'Authorization': 'token ${{ secrets.MOKOGITEA_TOKEN }}', + 'Content-Type': 'application/json' + }) + urllib.request.urlopen(req) + " <<< "$NOTES" + echo "Release notes updated from CHANGELOG.md" + fi + + - name: Build package and upload + id: package + run: | + VERSION="${{ steps.meta.outputs.version }}" + TAG="${{ steps.meta.outputs.tag }}" + API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" + php ${MOKO_CLI}/release_package.php \ + --path . --version "$VERSION" --tag "$TAG" \ + --token "${{ secrets.MOKOGITEA_TOKEN }}" --api-base "$API_BASE" \ + --repo "${GITEA_REPO}" --output /tmp || true + + # updates.xml is generated dynamically by MokoGitea license server + # No need to build, commit, or sync updates.xml from workflows + + - name: "Delete lesser pre-release channels (cascade)" + continue-on-error: true + run: | + API_BASE="${GITEA_URL}/api/v1/repos/${GITEA_ORG}/${GITEA_REPO}" + TOKEN="${{ secrets.MOKOGITEA_TOKEN }}" + + php ${MOKO_CLI}/release_cascade.php \ + --stability "${{ steps.meta.outputs.stability }}" \ + --token "${TOKEN}" \ + --api-base "${API_BASE}" + + - name: Summary + if: always() + run: | + VERSION="${{ steps.meta.outputs.version }}" + STABILITY="${{ steps.meta.outputs.stability }}" + ZIP_NAME="${{ steps.meta.outputs.zip_name }}" + SHA256="${{ steps.package.outputs.sha256_zip }}" + echo "## Pre-Release Complete" >> $GITHUB_STEP_SUMMARY + echo "" >> $GITHUB_STEP_SUMMARY + echo "| Field | Value |" >> $GITHUB_STEP_SUMMARY + echo "|-------|-------|" >> $GITHUB_STEP_SUMMARY + echo "| Version | \`${VERSION}\` |" >> $GITHUB_STEP_SUMMARY + echo "| Channel | ${STABILITY} |" >> $GITHUB_STEP_SUMMARY + echo "| Package | \`${ZIP_NAME}\` |" >> $GITHUB_STEP_SUMMARY + echo "| SHA-256 | \`${SHA256:-n/a}\` |" >> $GITHUB_STEP_SUMMARY diff --git a/.mokogitea/workflows/repo-health.yml b/.mokogitea/workflows/repo-health.yml index 8d57aaf0..d0538d52 100644 --- a/.mokogitea/workflows/repo-health.yml +++ b/.mokogitea/workflows/repo-health.yml @@ -1,711 +1,711 @@ -# ============================================================================ -# Copyright (C) 2025 Moko Consulting -# -# This file is part of a Moko Consulting project. -# -# SPDX-License-Identifier: GPL-3.0-or-later -# -# FILE INFORMATION -# DEFGROUP: Gitea.Workflow -# INGROUP: moko-platform.Validation -# REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/moko-platform -# PATH: /templates/workflows/joomla/repo_health.yml.template -# VERSION: 09.23.00 -# BRIEF: Enforces repository guardrails by validating scripts governance, tooling availability, and core repository health artifacts. -# ============================================================================ - -name: "Generic: Repo Health" - -defaults: - run: - shell: bash - -on: - workflow_dispatch: - inputs: - profile: - description: 'Validation profile: all, scripts, or repo' - required: true - default: all - type: choice - options: - - all - - scripts - - repo - pull_request: - push: - -permissions: - contents: read - -env: - # Scripts governance policy - SCRIPTS_REQUIRED_DIRS: - SCRIPTS_ALLOWED_DIRS: scripts,scripts/fix,scripts/lib,scripts/release,scripts/run,scripts/validate - - # Repo health policy - REPO_REQUIRED_ARTIFACTS: README.md,LICENSE,CHANGELOG.md,CONTRIBUTING.md,CODE_OF_CONDUCT.md,.mokogitea/workflows/ - REPO_OPTIONAL_FILES: SECURITY.md,GOVERNANCE.md,.editorconfig,.gitattributes,.gitignore,README.md,docs/ - REPO_DISALLOWED_DIRS: - REPO_DISALLOWED_FILES: TODO.md,todo.md - - # Extended checks toggles - EXTENDED_CHECKS: "true" - - # File / directory variables - DOCS_INDEX: docs/docs-index.md - SCRIPT_DIR: scripts - WORKFLOWS_DIR: .mokogitea/workflows - SHELLCHECK_PATTERN: '*.sh' - SPDX_FILE_GLOBS: '*.sh,*.php,*.js,*.ts,*.css,*.xml,*.yml,*.yaml' - FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true - -jobs: - access_check: - name: Access control - runs-on: ubuntu-latest - timeout-minutes: 10 - permissions: - contents: read - - outputs: - allowed: ${{ steps.perm.outputs.allowed }} - permission: ${{ steps.perm.outputs.permission }} - - steps: - - name: Check actor permission (admin only) - id: perm - env: - TOKEN: ${{ secrets.MOKOGITEA_TOKEN || secrets.MOKOGITEA_TOKEN || github.token }} - REPO: ${{ github.repository }} - ACTOR: ${{ github.actor }} - run: | - set -euo pipefail - ALLOWED=false - PERMISSION=unknown - METHOD="" - - # Hardcoded authorized users — always allowed - case "$ACTOR" in - jmiller|gitea-actions[bot]) - ALLOWED=true - PERMISSION=admin - METHOD="hardcoded allowlist" - ;; - *) - # Detect platform and check permissions via API - API_BASE="${GITHUB_API_URL:-${GITEA_API_URL:-https://api.github.com}}" - RESP=$(curl -sf -H "Authorization: token ${TOKEN}" \ - "${API_BASE}/repos/${REPO}/collaborators/${ACTOR}/permission" 2>/dev/null || echo '{}') - PERMISSION=$(echo "$RESP" | grep -oP '"permission"\s*:\s*"\K[^"]+' || echo "unknown") - if [ "$PERMISSION" = "admin" ] || [ "$PERMISSION" = "maintain" ] || [ "$PERMISSION" = "owner" ]; then - ALLOWED=true - fi - METHOD="collaborator API" - ;; - esac - - echo "permission=${PERMISSION}" >> "$GITHUB_OUTPUT" - echo "allowed=${ALLOWED}" >> "$GITHUB_OUTPUT" - - { - echo "## Access Authorization" - echo "" - echo "| Field | Value |" - echo "|-------|-------|" - echo "| **Actor** | \`${ACTOR}\` |" - echo "| **Repository** | \`${REPO}\` |" - echo "| **Permission** | \`${PERMISSION}\` |" - echo "| **Method** | ${METHOD} |" - echo "| **Authorized** | ${ALLOWED} |" - echo "" - if [ "$ALLOWED" = "true" ]; then - echo "${ACTOR} authorized (${METHOD})" - else - echo "${ACTOR} is NOT authorized. Requires admin or maintain role." - fi - } >> "${GITHUB_STEP_SUMMARY}" - - - name: Deny execution when not permitted - if: ${{ steps.perm.outputs.allowed != 'true' }} - run: | - set -euo pipefail - printf '%s\n' 'ERROR: Access denied. Admin permission required.' >> "${GITHUB_STEP_SUMMARY}" - exit 1 - - scripts_governance: - name: Scripts governance - needs: access_check - if: ${{ needs.access_check.outputs.allowed == 'true' }} - runs-on: ubuntu-latest - timeout-minutes: 15 - permissions: - contents: read - - steps: - - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - with: - fetch-depth: 0 - - - name: Scripts folder checks - env: - PROFILE_RAW: ${{ github.event.inputs.profile }} - run: | - set -euo pipefail - - profile="${PROFILE_RAW:-all}" - case "${profile}" in - all|scripts|repo) ;; - *) - printf '%s\n' "ERROR: Unknown profile: ${profile}" >> "${GITHUB_STEP_SUMMARY}" - exit 1 - ;; - esac - - if [ "${profile}" = 'repo' ]; then - { - printf '%s\n' '### Scripts governance' - printf '%s\n' "Profile: ${profile}" - printf '%s\n' 'Status: SKIPPED' - printf '%s\n' 'Reason: profile excludes scripts governance' - printf '\n' - } >> "${GITHUB_STEP_SUMMARY}" - exit 0 - fi - - if [ ! -d "${SCRIPT_DIR}" ]; then - { - printf '%s\n' '### Scripts governance' - printf '%s\n' 'Status: OK (advisory)' - printf '%s\n' 'scripts/ directory not present. No scripts governance enforced.' - printf '\n' - } >> "${GITHUB_STEP_SUMMARY}" - exit 0 - fi - - if [ -n "${SCRIPTS_REQUIRED_DIRS:-}" ]; then IFS=',' read -r -a required_dirs <<< "${SCRIPTS_REQUIRED_DIRS}"; else required_dirs=(); fi - IFS=',' read -r -a allowed_dirs <<< "${SCRIPTS_ALLOWED_DIRS}" - - missing_dirs=() - unapproved_dirs=() - - for d in "${required_dirs[@]}"; do - req="${d%/}" - [ ! -d "${req}" ] && missing_dirs+=("${req}/") - done - - while IFS= read -r d; do - allowed=false - for a in "${allowed_dirs[@]}"; do - a_norm="${a%/}" - [ "${d%/}" = "${a_norm}" ] && allowed=true - done - [ "${allowed}" = false ] && unapproved_dirs+=("${d%/}/") - done < <(find "${SCRIPT_DIR}" -maxdepth 1 -mindepth 1 -type d 2>/dev/null | sed 's#^\./##') - - { - printf '%s\n' '### Scripts governance' - printf '%s\n' "Profile: ${profile}" - printf '%s\n' '| Area | Status | Notes |' - printf '%s\n' '|---|---|---|' - - if [ "${#missing_dirs[@]}" -gt 0 ]; then - printf '%s\n' '| Required directories | Warning | Missing required subfolders |' - else - printf '%s\n' '| Required directories | OK | All required subfolders present |' - fi - - if [ "${#unapproved_dirs[@]}" -gt 0 ]; then - printf '%s\n' '| Directory policy | Warning | Unapproved directories detected |' - else - printf '%s\n' '| Directory policy | OK | No unapproved directories |' - fi - - printf '%s\n' '| Enforcement mode | Advisory | scripts folder is optional |' - printf '\n' - - if [ "${#missing_dirs[@]}" -gt 0 ]; then - printf '%s\n' 'Missing required script directories:' - for m in "${missing_dirs[@]}"; do printf '%s\n' "- ${m}"; done - printf '\n' - else - printf '%s\n' 'Missing required script directories: none.' - printf '\n' - fi - - if [ "${#unapproved_dirs[@]}" -gt 0 ]; then - printf '%s\n' 'Unapproved script directories detected:' - for m in "${unapproved_dirs[@]}"; do printf '%s\n' "- ${m}"; done - printf '\n' - else - printf '%s\n' 'Unapproved script directories detected: none.' - printf '\n' - fi - - printf '%s\n' 'Scripts governance completed in advisory mode.' - printf '\n' - } >> "${GITHUB_STEP_SUMMARY}" - - repo_health: - name: Repository health - needs: access_check - if: ${{ needs.access_check.outputs.allowed == 'true' }} - runs-on: ubuntu-latest - timeout-minutes: 20 - permissions: - contents: read - - steps: - - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 - with: - fetch-depth: 0 - - - name: Repository health checks - env: - PROFILE_RAW: ${{ github.event.inputs.profile }} - run: | - set -euo pipefail - - profile="${PROFILE_RAW:-all}" - case "${profile}" in - all|scripts|repo) ;; - *) - printf '%s\n' "ERROR: Unknown profile: ${profile}" >> "${GITHUB_STEP_SUMMARY}" - exit 1 - ;; - esac - - if [ "${profile}" = 'scripts' ]; then - { - printf '%s\n' '### Repository health' - printf '%s\n' "Profile: ${profile}" - printf '%s\n' 'Status: SKIPPED' - printf '%s\n' 'Reason: profile excludes repository health' - printf '\n' - } >> "${GITHUB_STEP_SUMMARY}" - exit 0 - fi - - IFS=',' read -r -a required_artifacts <<< "${REPO_REQUIRED_ARTIFACTS}" - IFS=',' read -r -a optional_files <<< "${REPO_OPTIONAL_FILES}" - if [ -n "${REPO_DISALLOWED_DIRS:-}" ]; then IFS=',' read -r -a disallowed_dirs <<< "${REPO_DISALLOWED_DIRS}"; else disallowed_dirs=(); fi - IFS=',' read -r -a disallowed_files <<< "${REPO_DISALLOWED_FILES:-}" - - missing_required=() - missing_optional=() - - # Source directory: src/ or htdocs/ (either is valid for extension repos) - SOURCE_DIR="" - if [ -d "src" ]; then - SOURCE_DIR="src" - elif [ -d "htdocs" ]; then - SOURCE_DIR="htdocs" - elif [ -d "deploy" ] || [ -d "cli" ] || [ -d "monitoring" ]; then - # Platform/tooling repos don't need src/ - SOURCE_DIR="" - else - missing_required+=("src/ or htdocs/ (source directory required)") - fi - - for item in "${required_artifacts[@]}"; do - if printf '%s' "${item}" | grep -q '/$'; then - d="${item%/}" - [ ! -d "${d}" ] && missing_required+=("${item}") - else - [ ! -f "${item}" ] && missing_required+=("${item}") - fi - done - - for f in "${optional_files[@]}"; do - if printf '%s' "${f}" | grep -q '/$'; then - d="${f%/}" - [ ! -d "${d}" ] && missing_optional+=("${f}") - else - [ ! -f "${f}" ] && missing_optional+=("${f}") - fi - done - - for d in "${disallowed_dirs[@]}"; do - d_norm="${d%/}" - [ -d "${d_norm}" ] && missing_required+=("${d_norm}/ (disallowed)") - done - - for f in "${disallowed_files[@]}"; do - [ -f "${f}" ] && missing_required+=("${f} (disallowed)") - done - - git fetch origin --prune - - dev_paths=() - dev_branches=() - - while IFS= read -r b; do - name="${b#origin/}" - if [ "${name}" = 'dev' ]; then - dev_branches+=("${name}") - else - dev_paths+=("${name}") - fi - done < <(git branch -r --list 'origin/dev*' | sed 's/^ *//') - - if [ "${#dev_paths[@]}" -eq 0 ] && [ "${#dev_branches[@]}" -eq 0 ]; then - missing_required+=("dev or dev/* branch") - fi - - content_warnings=() - - if [ -f 'CHANGELOG.md' ] && ! grep -Eq '^# Changelog' CHANGELOG.md; then - content_warnings+=("CHANGELOG.md missing '# Changelog' header") - fi - - if [ -f 'CHANGELOG.md' ] && grep -Eq '^[# ]*Unreleased' CHANGELOG.md; then - content_warnings+=("CHANGELOG.md contains Unreleased section (review release readiness)") - fi - - if [ -f 'LICENSE' ] && ! grep -qiE 'GNU GENERAL PUBLIC LICENSE|GPL' LICENSE; then - content_warnings+=("LICENSE does not look like a GPL text") - fi - - if [ -f 'README.md' ] && ! grep -qiE 'moko|Moko' README.md; then - content_warnings+=("README.md missing expected brand keyword") - fi - - export PROFILE_RAW="${profile}" - export MISSING_REQUIRED="$(printf '%s\n' "${missing_required[@]:-}")" - export MISSING_OPTIONAL="$(printf '%s\n' "${missing_optional[@]:-}")" - export CONTENT_WARNINGS="$(printf '%s\n' "${content_warnings[@]:-}")" - - report_json=$(printf '{"profile":"%s","missing_required":%d,"missing_optional":%d,"content_warnings":%d}' "$profile" "${#missing_required[@]}" "${#missing_optional[@]}" "${#content_warnings[@]}") - - { - printf '%s\n' '### Repository health' - printf '%s\n' "Profile: ${profile}" - printf '%s\n' '| Metric | Value |' - printf '%s\n' '|---|---|' - printf '%s\n' "| Missing required | ${#missing_required[@]} |" - printf '%s\n' "| Missing optional | ${#missing_optional[@]} |" - printf '%s\n' "| Content warnings | ${#content_warnings[@]} |" - printf '\n' - - printf '%s\n' '### Guardrails report (JSON)' - printf '%s\n' '```json' - printf '%s\n' "${report_json}" - printf '%s\n' '```' - printf '\n' - } >> "${GITHUB_STEP_SUMMARY}" - - if [ "${#missing_required[@]}" -gt 0 ]; then - { - printf '%s\n' '### Missing required repo artifacts' - for m in "${missing_required[@]}"; do printf '%s\n' "- ${m}"; done - printf '%s\n' 'ERROR: Guardrails failed. Missing required repository artifacts.' - printf '\n' - } >> "${GITHUB_STEP_SUMMARY}" - exit 1 - fi - - if [ "${#missing_optional[@]}" -gt 0 ]; then - { - printf '%s\n' '### Missing optional repo artifacts' - for m in "${missing_optional[@]}"; do printf '%s\n' "- ${m}"; done - printf '\n' - } >> "${GITHUB_STEP_SUMMARY}" - fi - - if [ "${#content_warnings[@]}" -gt 0 ]; then - { - printf '%s\n' '### Repo content warnings' - for m in "${content_warnings[@]}"; do printf '%s\n' "- ${m}"; done - printf '\n' - } >> "${GITHUB_STEP_SUMMARY}" - fi - - # -- Joomla-specific checks -- - joomla_findings=() - - MANIFEST="$(find . -maxdepth 2 -name '*.xml' -exec grep -l '/dev/null | head -1 || true)" - if [ -z "${MANIFEST}" ]; then - joomla_findings+=("Joomla XML manifest not found (no *.xml with tag)") - else - if ! grep -qP '' "${MANIFEST}"; then - joomla_findings+=("XML manifest: tag missing") - fi - if ! grep -qP 'type="(component|module|plugin|library|package|template|language)"' "${MANIFEST}"; then - joomla_findings+=("XML manifest: type attribute missing or invalid") - fi - if ! grep -qP '' "${MANIFEST}"; then - joomla_findings+=("XML manifest: tag missing") - fi - if ! grep -qP '' "${MANIFEST}"; then - joomla_findings+=("XML manifest: tag missing") - fi - if ! grep -qP ' missing (required for Joomla 5+)") - fi - fi - - INI_COUNT="$(find . -name '*.ini' -type f 2>/dev/null | wc -l)" - if [ "${INI_COUNT}" -eq 0 ]; then - joomla_findings+=("No .ini language files found") - fi - - if [ ! -f 'updates.xml' ]; then - joomla_findings+=("updates.xml missing in root (required for Joomla update server)") - fi - - if [ -n "${SOURCE_DIR}" ]; then - INDEX_DIRS=("${SOURCE_DIR}" "${SOURCE_DIR}/admin" "${SOURCE_DIR}/site") - for dir in "${INDEX_DIRS[@]}"; do - if [ -d "${dir}" ] && [ ! -f "${dir}/index.html" ]; then - joomla_findings+=("${dir}/index.html missing (directory listing protection)") - fi - done - fi - - if [ "${#joomla_findings[@]}" -gt 0 ]; then - { - printf '%s\n' '### Joomla extension checks' - printf '%s\n' '| Check | Status |' - printf '%s\n' '|---|---|' - for f in "${joomla_findings[@]}"; do - printf '%s\n' "| ${f} | Warning |" - done - printf '\n' - } >> "${GITHUB_STEP_SUMMARY}" - else - { - printf '%s\n' '### Joomla extension checks' - printf '%s\n' 'All Joomla-specific checks passed.' - printf '\n' - } >> "${GITHUB_STEP_SUMMARY}" - fi - - extended_enabled="${EXTENDED_CHECKS:-true}" - extended_findings=() - - if [ "${extended_enabled}" = 'true' ]; then - if [ -f '.github/CODEOWNERS' ] || [ -f 'CODEOWNERS' ] || [ -f 'docs/CODEOWNERS' ]; then - : - else - extended_findings+=("CODEOWNERS not found (.github/CODEOWNERS preferred)") - fi - - if ls "${WORKFLOWS_DIR}"/*.yml >/dev/null 2>&1 || ls "${WORKFLOWS_DIR}"/*.yaml >/dev/null 2>&1; then - bad_refs="$(grep -RIn --include='*.yml' --include='*.yaml' -E '^[[:space:]]*uses:[[:space:]]*[^#]+@(main|master)\b' "${WORKFLOWS_DIR}" 2>/dev/null || true)" - if [ -n "${bad_refs}" ]; then - extended_findings+=("Workflows reference actions @main/@master (pin versions): see log excerpt") - { - printf '%s\n' '### Workflow pinning advisory' - printf '%s\n' 'Found uses: entries pinned to main/master:' - printf '%s\n' '```' - printf '%s\n' "${bad_refs}" - printf '%s\n' '```' - printf '\n' - } >> "${GITHUB_STEP_SUMMARY}" - fi - fi - - if [ -f "${DOCS_INDEX}" ]; then - missing_links="" - while IFS= read -r docline; do - for link in $(echo "$docline" | grep -oE '\]\([^)]+\)' | sed 's/\](//' | sed 's/)$//' || true); do - case "$link" in http://*|https://*|"#"*|mailto:*) continue ;; esac - linkpath="${link%%#*}" - linkpath="${linkpath%%\?*}" - [ -z "$linkpath" ] && continue - if [ "${linkpath:0:1}" = "/" ]; then - testpath="${linkpath#/}" - else - testpath="$(dirname "${DOCS_INDEX}")/${linkpath}" - fi - [ ! -e "$testpath" ] && missing_links="${missing_links}${testpath} " - done - done < "${DOCS_INDEX}" - if [ -n "${missing_links}" ]; then - extended_findings+=("docs/docs-index.md contains broken relative links") - { - printf '%s\n' '### Docs index link integrity' - printf '%s\n' 'Broken relative links:' - for bl in ${missing_links}; do - printf '%s\n' "- ${bl}" - done - printf '\n' - } >> "${GITHUB_STEP_SUMMARY}" - fi - fi - - if [ -d "${SCRIPT_DIR}" ]; then - if ! command -v shellcheck >/dev/null 2>&1; then - sudo apt-get update -qq - sudo apt-get install -y shellcheck >/dev/null - fi - - sc_out='' - while IFS= read -r shf; do - [ -z "${shf}" ] && continue - out_one="$(shellcheck -S warning -x "${shf}" 2>/dev/null || true)" - if [ -n "${out_one}" ]; then - sc_out="${sc_out}${out_one}\n" - fi - done < <(find "${SCRIPT_DIR}" -type f -name "${SHELLCHECK_PATTERN}" 2>/dev/null | sort) - - if [ -n "${sc_out}" ]; then - extended_findings+=("ShellCheck warnings detected (advisory)") - sc_head="$(printf '%s' "${sc_out}" | head -n 200)" - { - printf '%s\n' '### ShellCheck (advisory)' - printf '%s\n' '```' - printf '%s\n' "${sc_head}" - printf '%s\n' '```' - printf '\n' - } >> "${GITHUB_STEP_SUMMARY}" - fi - fi - - spdx_missing=() - IFS=',' read -r -a spdx_globs <<< "${SPDX_FILE_GLOBS}" - spdx_args=() - for g in "${spdx_globs[@]}"; do spdx_args+=("${g}"); done - - while IFS= read -r f; do - [ -z "${f}" ] && continue - if ! head -n 40 "${f}" | grep -q 'SPDX-License-Identifier:'; then - spdx_missing+=("${f}") - fi - done < <(git ls-files "${spdx_args[@]}" 2>/dev/null || true) - - if [ "${#spdx_missing[@]}" -gt 0 ]; then - extended_findings+=("SPDX header missing in some tracked files (advisory)") - { - printf '%s\n' '### SPDX header advisory' - printf '%s\n' 'Files missing SPDX-License-Identifier (first 40 lines scan):' - for f in "${spdx_missing[@]}"; do printf '%s\n' "- ${f}"; done - printf '\n' - } >> "${GITHUB_STEP_SUMMARY}" - fi - - stale_cutoff_days=180 - stale_branches="$(git for-each-ref --format='%(refname:short) %(committerdate:unix)' refs/remotes/origin 2>/dev/null | awk -v now="$(date +%s)" -v days="${stale_cutoff_days}" '{if (now-$2 > days*86400) print $1}' | head -50)" - if [ -n "${stale_branches}" ]; then - extended_findings+=("Stale remote branches detected (advisory)") - { - printf '%s\n' '### Git hygiene advisory' - printf '%s\n' "Branches with last commit older than ${stale_cutoff_days} days (sample up to 50):" - while IFS= read -r b; do [ -n "${b}" ] && printf '%s\n' "- ${b}"; done <<< "${stale_branches}" - printf '\n' - } >> "${GITHUB_STEP_SUMMARY}" - fi - fi - - { - printf '%s\n' '### Guardrails coverage matrix' - printf '%s\n' '| Domain | Status | Notes |' - printf '%s\n' '|---|---|---|' - printf '%s\n' '| Access control | OK | Admin-only execution gate |' - printf '%s\n' '| Release policy | N/A | Releases handled by MokoGitea |' - printf '%s\n' '| Scripts governance | OK | Directory policy and advisory reporting |' - printf '%s\n' '| Repo required artifacts | OK | Required, optional, disallowed enforcement |' - printf '%s\n' '| Repo content heuristics | OK | Brand, license, changelog structure |' - if [ "${extended_enabled}" = 'true' ]; then - if [ "${#extended_findings[@]}" -gt 0 ]; then - printf '%s\n' '| Extended checks | Warning | See extended findings below |' - else - printf '%s\n' '| Extended checks | OK | No findings |' - fi - else - printf '%s\n' '| Extended checks | SKIPPED | EXTENDED_CHECKS disabled |' - fi - printf '\n' - } >> "${GITHUB_STEP_SUMMARY}" - - if [ "${extended_enabled}" = 'true' ] && [ "${#extended_findings[@]}" -gt 0 ]; then - { - printf '%s\n' '### Extended findings (advisory)' - for f in "${extended_findings[@]}"; do printf '%s\n' "- ${f}"; done - printf '\n' - } >> "${GITHUB_STEP_SUMMARY}" - fi - - printf '%s\n' 'Repository health guardrails passed.' >> "${GITHUB_STEP_SUMMARY}" - - - site-health: - name: Site Health - runs-on: ubuntu-latest - if: github.event_name == 'workflow_dispatch' - steps: - - uses: actions/checkout@v4 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: '8.3' - - - name: Uptime check - if: env.URLS != '' - run: | - echo "$URLS" > /tmp/urls.txt - php monitoring/uptime-probe.php --urls /tmp/urls.txt --timeout 15 || echo "::warning::Some sites are down" - rm -f /tmp/urls.txt - env: - URLS: ${{ vars.MONITORED_URLS }} - - - name: SSL certificate check - if: env.DOMAINS != '' - run: | - echo "$DOMAINS" > /tmp/domains.txt - php monitoring/ssl-check.php --domains /tmp/domains.txt --warn-days 30 || echo "::warning::SSL certificates expiring soon" - rm -f /tmp/domains.txt - env: - DOMAINS: ${{ vars.MONITORED_DOMAINS }} - - - name: Summary - if: always() - run: | - echo "### Site Health" >> $GITHUB_STEP_SUMMARY - echo "Uptime and SSL checks completed." >> $GITHUB_STEP_SUMMARY - - # ═══════════════════════════════════════════════════════════════════════ - # Issue Reporter — file issues for failed gates - # ═══════════════════════════════════════════════════════════════════════ - report-issues: - name: "Report Issues" - runs-on: ubuntu-latest - needs: [access_check, scripts_governance, repo_health] - if: >- - always() && - (needs.scripts_governance.result == 'failure' || - needs.repo_health.result == 'failure') - - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - sparse-checkout: automation/ci-issue-reporter.sh - sparse-checkout-cone-mode: false - - - name: "File issues for failed gates" - env: - GITEA_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }} - GITEA_URL: ${{ vars.GITEA_URL || 'https://git.mokoconsulting.tech' }} - run: | - chmod +x automation/ci-issue-reporter.sh - REPORTER="./automation/ci-issue-reporter.sh" - WF="Repo Health" - - report_gate() { - local gate="$1" result="$2" details="$3" - if [ "$result" = "failure" ]; then - "$REPORTER" --gate "$gate" --details "$details" --workflow "$WF" --severity error - fi - } - - report_gate "Scripts Governance" \ - "${{ needs.scripts_governance.result }}" \ - "Scripts directory policy violations detected. Review required and allowed directories." - - report_gate "Repository Health" \ - "${{ needs.repo_health.result }}" \ - "Repository health checks failed — missing required artifacts, disallowed files, or content warnings. Check the CI run summary." +# ============================================================================ +# Copyright (C) 2025 Moko Consulting +# +# This file is part of a Moko Consulting project. +# +# SPDX-License-Identifier: GPL-3.0-or-later +# +# FILE INFORMATION +# DEFGROUP: Gitea.Workflow +# INGROUP: moko-platform.Validation +# REPO: https://git.mokoconsulting.tech/mokoconsulting-tech/moko-platform +# PATH: /templates/workflows/joomla/repo_health.yml.template +# VERSION: 09.23.00 +# BRIEF: Enforces repository guardrails by validating scripts governance, tooling availability, and core repository health artifacts. +# ============================================================================ + +name: "Generic: Repo Health" + +defaults: + run: + shell: bash + +on: + workflow_dispatch: + inputs: + profile: + description: 'Validation profile: all, scripts, or repo' + required: true + default: all + type: choice + options: + - all + - scripts + - repo + pull_request: + push: + +permissions: + contents: read + +env: + # Scripts governance policy + SCRIPTS_REQUIRED_DIRS: + SCRIPTS_ALLOWED_DIRS: scripts,scripts/fix,scripts/lib,scripts/release,scripts/run,scripts/validate + + # Repo health policy + REPO_REQUIRED_ARTIFACTS: README.md,LICENSE,CHANGELOG.md,CONTRIBUTING.md,CODE_OF_CONDUCT.md,.mokogitea/workflows/ + REPO_OPTIONAL_FILES: SECURITY.md,GOVERNANCE.md,.editorconfig,.gitattributes,.gitignore,README.md,docs/ + REPO_DISALLOWED_DIRS: + REPO_DISALLOWED_FILES: TODO.md,todo.md + + # Extended checks toggles + EXTENDED_CHECKS: "true" + + # File / directory variables + DOCS_INDEX: docs/docs-index.md + SCRIPT_DIR: scripts + WORKFLOWS_DIR: .mokogitea/workflows + SHELLCHECK_PATTERN: '*.sh' + SPDX_FILE_GLOBS: '*.sh,*.php,*.js,*.ts,*.css,*.xml,*.yml,*.yaml' + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true + +jobs: + access_check: + name: Access control + runs-on: ubuntu-latest + timeout-minutes: 10 + permissions: + contents: read + + outputs: + allowed: ${{ steps.perm.outputs.allowed }} + permission: ${{ steps.perm.outputs.permission }} + + steps: + - name: Check actor permission (admin only) + id: perm + env: + TOKEN: ${{ secrets.MOKOGITEA_TOKEN || secrets.MOKOGITEA_TOKEN || github.token }} + REPO: ${{ github.repository }} + ACTOR: ${{ github.actor }} + run: | + set -euo pipefail + ALLOWED=false + PERMISSION=unknown + METHOD="" + + # Hardcoded authorized users — always allowed + case "$ACTOR" in + jmiller|gitea-actions[bot]) + ALLOWED=true + PERMISSION=admin + METHOD="hardcoded allowlist" + ;; + *) + # Detect platform and check permissions via API + API_BASE="${GITHUB_API_URL:-${GITEA_API_URL:-https://api.github.com}}" + RESP=$(curl -sf -H "Authorization: token ${TOKEN}" \ + "${API_BASE}/repos/${REPO}/collaborators/${ACTOR}/permission" 2>/dev/null || echo '{}') + PERMISSION=$(echo "$RESP" | grep -oP '"permission"\s*:\s*"\K[^"]+' || echo "unknown") + if [ "$PERMISSION" = "admin" ] || [ "$PERMISSION" = "maintain" ] || [ "$PERMISSION" = "owner" ]; then + ALLOWED=true + fi + METHOD="collaborator API" + ;; + esac + + echo "permission=${PERMISSION}" >> "$GITHUB_OUTPUT" + echo "allowed=${ALLOWED}" >> "$GITHUB_OUTPUT" + + { + echo "## Access Authorization" + echo "" + echo "| Field | Value |" + echo "|-------|-------|" + echo "| **Actor** | \`${ACTOR}\` |" + echo "| **Repository** | \`${REPO}\` |" + echo "| **Permission** | \`${PERMISSION}\` |" + echo "| **Method** | ${METHOD} |" + echo "| **Authorized** | ${ALLOWED} |" + echo "" + if [ "$ALLOWED" = "true" ]; then + echo "${ACTOR} authorized (${METHOD})" + else + echo "${ACTOR} is NOT authorized. Requires admin or maintain role." + fi + } >> "${GITHUB_STEP_SUMMARY}" + + - name: Deny execution when not permitted + if: ${{ steps.perm.outputs.allowed != 'true' }} + run: | + set -euo pipefail + printf '%s\n' 'ERROR: Access denied. Admin permission required.' >> "${GITHUB_STEP_SUMMARY}" + exit 1 + + scripts_governance: + name: Scripts governance + needs: access_check + if: ${{ needs.access_check.outputs.allowed == 'true' }} + runs-on: ubuntu-latest + timeout-minutes: 15 + permissions: + contents: read + + steps: + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + fetch-depth: 0 + + - name: Scripts folder checks + env: + PROFILE_RAW: ${{ github.event.inputs.profile }} + run: | + set -euo pipefail + + profile="${PROFILE_RAW:-all}" + case "${profile}" in + all|scripts|repo) ;; + *) + printf '%s\n' "ERROR: Unknown profile: ${profile}" >> "${GITHUB_STEP_SUMMARY}" + exit 1 + ;; + esac + + if [ "${profile}" = 'repo' ]; then + { + printf '%s\n' '### Scripts governance' + printf '%s\n' "Profile: ${profile}" + printf '%s\n' 'Status: SKIPPED' + printf '%s\n' 'Reason: profile excludes scripts governance' + printf '\n' + } >> "${GITHUB_STEP_SUMMARY}" + exit 0 + fi + + if [ ! -d "${SCRIPT_DIR}" ]; then + { + printf '%s\n' '### Scripts governance' + printf '%s\n' 'Status: OK (advisory)' + printf '%s\n' 'scripts/ directory not present. No scripts governance enforced.' + printf '\n' + } >> "${GITHUB_STEP_SUMMARY}" + exit 0 + fi + + if [ -n "${SCRIPTS_REQUIRED_DIRS:-}" ]; then IFS=',' read -r -a required_dirs <<< "${SCRIPTS_REQUIRED_DIRS}"; else required_dirs=(); fi + IFS=',' read -r -a allowed_dirs <<< "${SCRIPTS_ALLOWED_DIRS}" + + missing_dirs=() + unapproved_dirs=() + + for d in "${required_dirs[@]}"; do + req="${d%/}" + [ ! -d "${req}" ] && missing_dirs+=("${req}/") + done + + while IFS= read -r d; do + allowed=false + for a in "${allowed_dirs[@]}"; do + a_norm="${a%/}" + [ "${d%/}" = "${a_norm}" ] && allowed=true + done + [ "${allowed}" = false ] && unapproved_dirs+=("${d%/}/") + done < <(find "${SCRIPT_DIR}" -maxdepth 1 -mindepth 1 -type d 2>/dev/null | sed 's#^\./##') + + { + printf '%s\n' '### Scripts governance' + printf '%s\n' "Profile: ${profile}" + printf '%s\n' '| Area | Status | Notes |' + printf '%s\n' '|---|---|---|' + + if [ "${#missing_dirs[@]}" -gt 0 ]; then + printf '%s\n' '| Required directories | Warning | Missing required subfolders |' + else + printf '%s\n' '| Required directories | OK | All required subfolders present |' + fi + + if [ "${#unapproved_dirs[@]}" -gt 0 ]; then + printf '%s\n' '| Directory policy | Warning | Unapproved directories detected |' + else + printf '%s\n' '| Directory policy | OK | No unapproved directories |' + fi + + printf '%s\n' '| Enforcement mode | Advisory | scripts folder is optional |' + printf '\n' + + if [ "${#missing_dirs[@]}" -gt 0 ]; then + printf '%s\n' 'Missing required script directories:' + for m in "${missing_dirs[@]}"; do printf '%s\n' "- ${m}"; done + printf '\n' + else + printf '%s\n' 'Missing required script directories: none.' + printf '\n' + fi + + if [ "${#unapproved_dirs[@]}" -gt 0 ]; then + printf '%s\n' 'Unapproved script directories detected:' + for m in "${unapproved_dirs[@]}"; do printf '%s\n' "- ${m}"; done + printf '\n' + else + printf '%s\n' 'Unapproved script directories detected: none.' + printf '\n' + fi + + printf '%s\n' 'Scripts governance completed in advisory mode.' + printf '\n' + } >> "${GITHUB_STEP_SUMMARY}" + + repo_health: + name: Repository health + needs: access_check + if: ${{ needs.access_check.outputs.allowed == 'true' }} + runs-on: ubuntu-latest + timeout-minutes: 20 + permissions: + contents: read + + steps: + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6 + with: + fetch-depth: 0 + + - name: Repository health checks + env: + PROFILE_RAW: ${{ github.event.inputs.profile }} + run: | + set -euo pipefail + + profile="${PROFILE_RAW:-all}" + case "${profile}" in + all|scripts|repo) ;; + *) + printf '%s\n' "ERROR: Unknown profile: ${profile}" >> "${GITHUB_STEP_SUMMARY}" + exit 1 + ;; + esac + + if [ "${profile}" = 'scripts' ]; then + { + printf '%s\n' '### Repository health' + printf '%s\n' "Profile: ${profile}" + printf '%s\n' 'Status: SKIPPED' + printf '%s\n' 'Reason: profile excludes repository health' + printf '\n' + } >> "${GITHUB_STEP_SUMMARY}" + exit 0 + fi + + IFS=',' read -r -a required_artifacts <<< "${REPO_REQUIRED_ARTIFACTS}" + IFS=',' read -r -a optional_files <<< "${REPO_OPTIONAL_FILES}" + if [ -n "${REPO_DISALLOWED_DIRS:-}" ]; then IFS=',' read -r -a disallowed_dirs <<< "${REPO_DISALLOWED_DIRS}"; else disallowed_dirs=(); fi + IFS=',' read -r -a disallowed_files <<< "${REPO_DISALLOWED_FILES:-}" + + missing_required=() + missing_optional=() + + # Source directory: src/ or htdocs/ (either is valid for extension repos) + SOURCE_DIR="" + if [ -d "src" ]; then + SOURCE_DIR="src" + elif [ -d "htdocs" ]; then + SOURCE_DIR="htdocs" + elif [ -d "deploy" ] || [ -d "cli" ] || [ -d "monitoring" ]; then + # Platform/tooling repos don't need src/ + SOURCE_DIR="" + else + missing_required+=("src/ or htdocs/ (source directory required)") + fi + + for item in "${required_artifacts[@]}"; do + if printf '%s' "${item}" | grep -q '/$'; then + d="${item%/}" + [ ! -d "${d}" ] && missing_required+=("${item}") + else + [ ! -f "${item}" ] && missing_required+=("${item}") + fi + done + + for f in "${optional_files[@]}"; do + if printf '%s' "${f}" | grep -q '/$'; then + d="${f%/}" + [ ! -d "${d}" ] && missing_optional+=("${f}") + else + [ ! -f "${f}" ] && missing_optional+=("${f}") + fi + done + + for d in "${disallowed_dirs[@]}"; do + d_norm="${d%/}" + [ -d "${d_norm}" ] && missing_required+=("${d_norm}/ (disallowed)") + done + + for f in "${disallowed_files[@]}"; do + [ -f "${f}" ] && missing_required+=("${f} (disallowed)") + done + + git fetch origin --prune + + dev_paths=() + dev_branches=() + + while IFS= read -r b; do + name="${b#origin/}" + if [ "${name}" = 'dev' ]; then + dev_branches+=("${name}") + else + dev_paths+=("${name}") + fi + done < <(git branch -r --list 'origin/dev*' | sed 's/^ *//') + + if [ "${#dev_paths[@]}" -eq 0 ] && [ "${#dev_branches[@]}" -eq 0 ]; then + missing_required+=("dev or dev/* branch") + fi + + content_warnings=() + + if [ -f 'CHANGELOG.md' ] && ! grep -Eq '^# Changelog' CHANGELOG.md; then + content_warnings+=("CHANGELOG.md missing '# Changelog' header") + fi + + if [ -f 'CHANGELOG.md' ] && grep -Eq '^[# ]*Unreleased' CHANGELOG.md; then + content_warnings+=("CHANGELOG.md contains Unreleased section (review release readiness)") + fi + + if [ -f 'LICENSE' ] && ! grep -qiE 'GNU GENERAL PUBLIC LICENSE|GPL' LICENSE; then + content_warnings+=("LICENSE does not look like a GPL text") + fi + + if [ -f 'README.md' ] && ! grep -qiE 'moko|Moko' README.md; then + content_warnings+=("README.md missing expected brand keyword") + fi + + export PROFILE_RAW="${profile}" + export MISSING_REQUIRED="$(printf '%s\n' "${missing_required[@]:-}")" + export MISSING_OPTIONAL="$(printf '%s\n' "${missing_optional[@]:-}")" + export CONTENT_WARNINGS="$(printf '%s\n' "${content_warnings[@]:-}")" + + report_json=$(printf '{"profile":"%s","missing_required":%d,"missing_optional":%d,"content_warnings":%d}' "$profile" "${#missing_required[@]}" "${#missing_optional[@]}" "${#content_warnings[@]}") + + { + printf '%s\n' '### Repository health' + printf '%s\n' "Profile: ${profile}" + printf '%s\n' '| Metric | Value |' + printf '%s\n' '|---|---|' + printf '%s\n' "| Missing required | ${#missing_required[@]} |" + printf '%s\n' "| Missing optional | ${#missing_optional[@]} |" + printf '%s\n' "| Content warnings | ${#content_warnings[@]} |" + printf '\n' + + printf '%s\n' '### Guardrails report (JSON)' + printf '%s\n' '```json' + printf '%s\n' "${report_json}" + printf '%s\n' '```' + printf '\n' + } >> "${GITHUB_STEP_SUMMARY}" + + if [ "${#missing_required[@]}" -gt 0 ]; then + { + printf '%s\n' '### Missing required repo artifacts' + for m in "${missing_required[@]}"; do printf '%s\n' "- ${m}"; done + printf '%s\n' 'ERROR: Guardrails failed. Missing required repository artifacts.' + printf '\n' + } >> "${GITHUB_STEP_SUMMARY}" + exit 1 + fi + + if [ "${#missing_optional[@]}" -gt 0 ]; then + { + printf '%s\n' '### Missing optional repo artifacts' + for m in "${missing_optional[@]}"; do printf '%s\n' "- ${m}"; done + printf '\n' + } >> "${GITHUB_STEP_SUMMARY}" + fi + + if [ "${#content_warnings[@]}" -gt 0 ]; then + { + printf '%s\n' '### Repo content warnings' + for m in "${content_warnings[@]}"; do printf '%s\n' "- ${m}"; done + printf '\n' + } >> "${GITHUB_STEP_SUMMARY}" + fi + + # -- Joomla-specific checks -- + joomla_findings=() + + MANIFEST="$(find . -maxdepth 2 -name '*.xml' -exec grep -l '/dev/null | head -1 || true)" + if [ -z "${MANIFEST}" ]; then + joomla_findings+=("Joomla XML manifest not found (no *.xml with tag)") + else + if ! grep -qP '' "${MANIFEST}"; then + joomla_findings+=("XML manifest: tag missing") + fi + if ! grep -qP 'type="(component|module|plugin|library|package|template|language)"' "${MANIFEST}"; then + joomla_findings+=("XML manifest: type attribute missing or invalid") + fi + if ! grep -qP '' "${MANIFEST}"; then + joomla_findings+=("XML manifest: tag missing") + fi + if ! grep -qP '' "${MANIFEST}"; then + joomla_findings+=("XML manifest: tag missing") + fi + if ! grep -qP ' missing (required for Joomla 5+)") + fi + fi + + INI_COUNT="$(find . -name '*.ini' -type f 2>/dev/null | wc -l)" + if [ "${INI_COUNT}" -eq 0 ]; then + joomla_findings+=("No .ini language files found") + fi + + if [ ! -f 'updates.xml' ]; then + joomla_findings+=("updates.xml missing in root (required for Joomla update server)") + fi + + if [ -n "${SOURCE_DIR}" ]; then + INDEX_DIRS=("${SOURCE_DIR}" "${SOURCE_DIR}/admin" "${SOURCE_DIR}/site") + for dir in "${INDEX_DIRS[@]}"; do + if [ -d "${dir}" ] && [ ! -f "${dir}/index.html" ]; then + joomla_findings+=("${dir}/index.html missing (directory listing protection)") + fi + done + fi + + if [ "${#joomla_findings[@]}" -gt 0 ]; then + { + printf '%s\n' '### Joomla extension checks' + printf '%s\n' '| Check | Status |' + printf '%s\n' '|---|---|' + for f in "${joomla_findings[@]}"; do + printf '%s\n' "| ${f} | Warning |" + done + printf '\n' + } >> "${GITHUB_STEP_SUMMARY}" + else + { + printf '%s\n' '### Joomla extension checks' + printf '%s\n' 'All Joomla-specific checks passed.' + printf '\n' + } >> "${GITHUB_STEP_SUMMARY}" + fi + + extended_enabled="${EXTENDED_CHECKS:-true}" + extended_findings=() + + if [ "${extended_enabled}" = 'true' ]; then + if [ -f '.github/CODEOWNERS' ] || [ -f 'CODEOWNERS' ] || [ -f 'docs/CODEOWNERS' ]; then + : + else + extended_findings+=("CODEOWNERS not found (.github/CODEOWNERS preferred)") + fi + + if ls "${WORKFLOWS_DIR}"/*.yml >/dev/null 2>&1 || ls "${WORKFLOWS_DIR}"/*.yaml >/dev/null 2>&1; then + bad_refs="$(grep -RIn --include='*.yml' --include='*.yaml' -E '^[[:space:]]*uses:[[:space:]]*[^#]+@(main|master)\b' "${WORKFLOWS_DIR}" 2>/dev/null || true)" + if [ -n "${bad_refs}" ]; then + extended_findings+=("Workflows reference actions @main/@master (pin versions): see log excerpt") + { + printf '%s\n' '### Workflow pinning advisory' + printf '%s\n' 'Found uses: entries pinned to main/master:' + printf '%s\n' '```' + printf '%s\n' "${bad_refs}" + printf '%s\n' '```' + printf '\n' + } >> "${GITHUB_STEP_SUMMARY}" + fi + fi + + if [ -f "${DOCS_INDEX}" ]; then + missing_links="" + while IFS= read -r docline; do + for link in $(echo "$docline" | grep -oE '\]\([^)]+\)' | sed 's/\](//' | sed 's/)$//' || true); do + case "$link" in http://*|https://*|"#"*|mailto:*) continue ;; esac + linkpath="${link%%#*}" + linkpath="${linkpath%%\?*}" + [ -z "$linkpath" ] && continue + if [ "${linkpath:0:1}" = "/" ]; then + testpath="${linkpath#/}" + else + testpath="$(dirname "${DOCS_INDEX}")/${linkpath}" + fi + [ ! -e "$testpath" ] && missing_links="${missing_links}${testpath} " + done + done < "${DOCS_INDEX}" + if [ -n "${missing_links}" ]; then + extended_findings+=("docs/docs-index.md contains broken relative links") + { + printf '%s\n' '### Docs index link integrity' + printf '%s\n' 'Broken relative links:' + for bl in ${missing_links}; do + printf '%s\n' "- ${bl}" + done + printf '\n' + } >> "${GITHUB_STEP_SUMMARY}" + fi + fi + + if [ -d "${SCRIPT_DIR}" ]; then + if ! command -v shellcheck >/dev/null 2>&1; then + sudo apt-get update -qq + sudo apt-get install -y shellcheck >/dev/null + fi + + sc_out='' + while IFS= read -r shf; do + [ -z "${shf}" ] && continue + out_one="$(shellcheck -S warning -x "${shf}" 2>/dev/null || true)" + if [ -n "${out_one}" ]; then + sc_out="${sc_out}${out_one}\n" + fi + done < <(find "${SCRIPT_DIR}" -type f -name "${SHELLCHECK_PATTERN}" 2>/dev/null | sort) + + if [ -n "${sc_out}" ]; then + extended_findings+=("ShellCheck warnings detected (advisory)") + sc_head="$(printf '%s' "${sc_out}" | head -n 200)" + { + printf '%s\n' '### ShellCheck (advisory)' + printf '%s\n' '```' + printf '%s\n' "${sc_head}" + printf '%s\n' '```' + printf '\n' + } >> "${GITHUB_STEP_SUMMARY}" + fi + fi + + spdx_missing=() + IFS=',' read -r -a spdx_globs <<< "${SPDX_FILE_GLOBS}" + spdx_args=() + for g in "${spdx_globs[@]}"; do spdx_args+=("${g}"); done + + while IFS= read -r f; do + [ -z "${f}" ] && continue + if ! head -n 40 "${f}" | grep -q 'SPDX-License-Identifier:'; then + spdx_missing+=("${f}") + fi + done < <(git ls-files "${spdx_args[@]}" 2>/dev/null || true) + + if [ "${#spdx_missing[@]}" -gt 0 ]; then + extended_findings+=("SPDX header missing in some tracked files (advisory)") + { + printf '%s\n' '### SPDX header advisory' + printf '%s\n' 'Files missing SPDX-License-Identifier (first 40 lines scan):' + for f in "${spdx_missing[@]}"; do printf '%s\n' "- ${f}"; done + printf '\n' + } >> "${GITHUB_STEP_SUMMARY}" + fi + + stale_cutoff_days=180 + stale_branches="$(git for-each-ref --format='%(refname:short) %(committerdate:unix)' refs/remotes/origin 2>/dev/null | awk -v now="$(date +%s)" -v days="${stale_cutoff_days}" '{if (now-$2 > days*86400) print $1}' | head -50)" + if [ -n "${stale_branches}" ]; then + extended_findings+=("Stale remote branches detected (advisory)") + { + printf '%s\n' '### Git hygiene advisory' + printf '%s\n' "Branches with last commit older than ${stale_cutoff_days} days (sample up to 50):" + while IFS= read -r b; do [ -n "${b}" ] && printf '%s\n' "- ${b}"; done <<< "${stale_branches}" + printf '\n' + } >> "${GITHUB_STEP_SUMMARY}" + fi + fi + + { + printf '%s\n' '### Guardrails coverage matrix' + printf '%s\n' '| Domain | Status | Notes |' + printf '%s\n' '|---|---|---|' + printf '%s\n' '| Access control | OK | Admin-only execution gate |' + printf '%s\n' '| Release policy | N/A | Releases handled by MokoGitea |' + printf '%s\n' '| Scripts governance | OK | Directory policy and advisory reporting |' + printf '%s\n' '| Repo required artifacts | OK | Required, optional, disallowed enforcement |' + printf '%s\n' '| Repo content heuristics | OK | Brand, license, changelog structure |' + if [ "${extended_enabled}" = 'true' ]; then + if [ "${#extended_findings[@]}" -gt 0 ]; then + printf '%s\n' '| Extended checks | Warning | See extended findings below |' + else + printf '%s\n' '| Extended checks | OK | No findings |' + fi + else + printf '%s\n' '| Extended checks | SKIPPED | EXTENDED_CHECKS disabled |' + fi + printf '\n' + } >> "${GITHUB_STEP_SUMMARY}" + + if [ "${extended_enabled}" = 'true' ] && [ "${#extended_findings[@]}" -gt 0 ]; then + { + printf '%s\n' '### Extended findings (advisory)' + for f in "${extended_findings[@]}"; do printf '%s\n' "- ${f}"; done + printf '\n' + } >> "${GITHUB_STEP_SUMMARY}" + fi + + printf '%s\n' 'Repository health guardrails passed.' >> "${GITHUB_STEP_SUMMARY}" + + + site-health: + name: Site Health + runs-on: ubuntu-latest + if: github.event_name == 'workflow_dispatch' + steps: + - uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.3' + + - name: Uptime check + if: env.URLS != '' + run: | + echo "$URLS" > /tmp/urls.txt + php monitoring/uptime-probe.php --urls /tmp/urls.txt --timeout 15 || echo "::warning::Some sites are down" + rm -f /tmp/urls.txt + env: + URLS: ${{ vars.MONITORED_URLS }} + + - name: SSL certificate check + if: env.DOMAINS != '' + run: | + echo "$DOMAINS" > /tmp/domains.txt + php monitoring/ssl-check.php --domains /tmp/domains.txt --warn-days 30 || echo "::warning::SSL certificates expiring soon" + rm -f /tmp/domains.txt + env: + DOMAINS: ${{ vars.MONITORED_DOMAINS }} + + - name: Summary + if: always() + run: | + echo "### Site Health" >> $GITHUB_STEP_SUMMARY + echo "Uptime and SSL checks completed." >> $GITHUB_STEP_SUMMARY + + # ═══════════════════════════════════════════════════════════════════════ + # Issue Reporter — file issues for failed gates + # ═══════════════════════════════════════════════════════════════════════ + report-issues: + name: "Report Issues" + runs-on: ubuntu-latest + needs: [access_check, scripts_governance, repo_health] + if: >- + always() && + (needs.scripts_governance.result == 'failure' || + needs.repo_health.result == 'failure') + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + sparse-checkout: automation/ci-issue-reporter.sh + sparse-checkout-cone-mode: false + + - name: "File issues for failed gates" + env: + GITEA_TOKEN: ${{ secrets.MOKOGITEA_TOKEN }} + GITEA_URL: ${{ vars.GITEA_URL || 'https://git.mokoconsulting.tech' }} + run: | + chmod +x automation/ci-issue-reporter.sh + REPORTER="./automation/ci-issue-reporter.sh" + WF="Repo Health" + + report_gate() { + local gate="$1" result="$2" details="$3" + if [ "$result" = "failure" ]; then + "$REPORTER" --gate "$gate" --details "$details" --workflow "$WF" --severity error + fi + } + + report_gate "Scripts Governance" \ + "${{ needs.scripts_governance.result }}" \ + "Scripts directory policy violations detected. Review required and allowed directories." + + report_gate "Repository Health" \ + "${{ needs.repo_health.result }}" \ + "Repository health checks failed — missing required artifacts, disallowed files, or content warnings. Check the CI run summary." diff --git a/CHANGELOG.md b/CHANGELOG.md index c40bb247..2fd8d4f4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,8 +11,8 @@ # FILE INFORMATION DEFGROUP: - INGROUP: MokoWaaS.Documentation - REPO: https://github.com/mokoconsulting-tech/mokowaas + INGROUP: MokoSuite.Documentation + REPO: https://github.com/mokoconsulting-tech/mokosuite PATH: ./CHANGELOG.md VERSION: 02.34.43 BRIEF: Version history using `Keep a Changelog` @@ -23,7 +23,7 @@ ## [Unreleased] ### Added -- RSA-signed heartbeat authentication — private key in monitor plugin manifest, public key on MokoWaaSHQ +- RSA-signed heartbeat authentication — private key in monitor plugin manifest, public key on MokoSuiteHQ - Monitor plugin base_url set via manifest (hidden from admin UI), propagated via update server - Send Heartbeat button on health token field for manual heartbeat testing @@ -39,14 +39,14 @@ - Core plugin stripped to heartbeat-only config (~5,500 lines removed) - Extension catalog (catalog.xml) with update server discovery (#186) - Download key preservation across Joomla updates (#187) -- Remote login endpoint for MokoWaaSHQ auto-login +- Remote login endpoint for MokoSuiteHQ auto-login - Provision reset API for new client setup (hits, versions, tokens) - Setup required banner after provision reset - Support verification PIN (MOKO-XXXX-XXXX) -- mod_mokowaas_categories — auto-category tree menu (#184) +- mod_mokosuite_categories — auto-category tree menu (#184) - Cache/temp split button in status bar - Dashboard version tiles for component and modules -- Monitor plugin sends full health payload to MokoWaaSHQ +- Monitor plugin sends full health payload to MokoSuiteHQ - Firewall: block_frontend_superuser, own trusted_ip_entry.xml - DevTools: reset download keys toggle @@ -66,17 +66,17 @@ ### Added - Database Tools view — table status, optimize, repair, session purge (#127) - Cache Cleanup view — directory size reporting and one-click cleanup (#128) -- mod_mokowaas_cache — one-click cache cleaner button in admin status bar (replaces Regular Labs Cache Cleaner) -- mod_mokowaas_menu — collapsible admin sidebar menu using native MetisMenu classes (like Community Builder) +- mod_mokosuite_cache — one-click cache cleaner button in admin status bar (replaces Regular Labs Cache Cleaner) +- mod_mokosuite_menu — collapsible admin sidebar menu using native MetisMenu classes (like Community Builder) - SSL certificate expiry monitoring in cpanel module (#148) -- MokoWaaS-specific update badge (blue) separate from other updates in cpanel module +- MokoSuite-specific update badge (blue) separate from other updates in cpanel module - migrateUpdateServerUrls() — rewrites all Moko extension update server URLs to clean /updates.xml on install/update - fixMenuIcons() — sets menu_icon params on submenu items (Joomla only renders img on level 1) - setupCacheModule() — registers cache cleaner module in status bar position on install - Component config.xml for Joomla Options modal (#149) - preflight() ALTER for #__extensions.element default (MySQL strict mode fix) - Retire MokoJoomTOS, MokoATS-Automation, MokoDPCalendarAPI, MokoGalleryCalendar on install -- MokoJoomTOS settings auto-migrate to mokowaas_offline before removal +- MokoJoomTOS settings auto-migrate to mokosuite_offline before removal - dev-release and pre-release workflows with changelog extraction into release notes - RC pre-release consolidates dev patches into clean minor version bump @@ -108,20 +108,20 @@ ## [02.32] - 2026-06-02 ### Added -- Admin control panel dashboard in com_mokowaas with site info bar, feature plugin grid, and quick actions -- Feature plugin architecture — MokoWaaS features split into toggleable plugins managed from the dashboard -- plg_system_mokowaas_firewall — HTTPS enforcement, trusted IPs, session timeout, upload restrictions, password policy -- plg_system_mokowaas_tenant — Installer, sysinfo, config, template, and menu restrictions for non-master users -- plg_system_mokowaas_devtools — Dev mode, hit counter reset, content version cleanup -- plg_system_mokowaas_monitor — Grafana heartbeat integration and health monitoring -- MokoWaaSHelper utility class for shared master-user detection across feature plugins +- Admin control panel dashboard in com_mokosuite with site info bar, feature plugin grid, and quick actions +- Feature plugin architecture — MokoSuite features split into toggleable plugins managed from the dashboard +- plg_system_mokosuite_firewall — HTTPS enforcement, trusted IPs, session timeout, upload restrictions, password policy +- plg_system_mokosuite_tenant — Installer, sysinfo, config, template, and menu restrictions for non-master users +- plg_system_mokosuite_devtools — Dev mode, hit counter reset, content version cleanup +- plg_system_mokosuite_monitor — Grafana heartbeat integration and health monitoring +- MokoSuiteHelper utility class for shared master-user detection across feature plugins - AJAX plugin toggle — enable/disable feature plugins directly from the dashboard - Clear cache quick action on dashboard - Static updates.xml for update server (licensing system deferred) - Automatic param migration from core plugin to feature plugins on upgrade ### Changed -- com_mokowaas upgraded from API-only to full admin component with dashboard views +- com_mokosuite upgraded from API-only to full admin component with dashboard views - Package manifest updated with 4 new feature plugin entries (10 extensions total) - Update server URL changed to static raw file endpoint - Core plugin slimmed — security, tenant, devtools, and monitor features extracted to dedicated plugins @@ -139,7 +139,7 @@ - Persistent admin warning when no license key is configured in Update Sites - Daily heartbeat validation of license key against MokoGitea — warns if key is invalid or expired - Stale/duplicate update site cleanup on install/update (removes old static URL entries and orphaned records) -- Content sync rewritten — bulk MokoWaaS API endpoints (syncclear + syncpush) replace per-item Joomla API calls +- Content sync rewritten — bulk MokoSuite API endpoints (syncclear + syncpush) replace per-item Joomla API calls - Sync task per-instance config: target URL, health token, content type checkboxes (articles, categories, menus, modules) - Bulk sync completes in under 5 seconds (clear + push in 2-3 HTTP requests) - Asset table and nested set tree repair after sync push on target site @@ -159,7 +159,7 @@ - Static `updates.xml` — update feed is now generated dynamically by MokoGitea from git releases - Basic branding config tab (brand name, company name, support URL) - Visual branding config tab (colors, icon, custom CSS) -- WaaS Access config tab (master user toggle, master email) +- Suite Access config tab (master user toggle, master email) - Content Sync config tab (targets now in scheduled tasks) - Site Aliases config tab (hardcoded to dev.{primary_domain}) - File sync (images/, files/, media/) — sync is API/DB content only @@ -173,24 +173,24 @@ ### Fixed - Emergency access IP whitelist: empty `allowed_ips` now permits all IPs (was blocking everyone) - Emergency access reads `allowed_ips` from plugin params instead of global config -- `plg_task_mokowaassync` — Joomla Scheduled Task plugin for automatic content sync to remote sites +- `plg_task_mokosuitesync` — Joomla Scheduled Task plugin for automatic content sync to remote sites - Community Builder tables added to demo reset safe table list -- API endpoint `POST /api/index.php/v1/mokowaas/install` — install extensions from a remote ZIP URL +- API endpoint `POST /api/index.php/v1/mokosuite/install` — install extensions from a remote ZIP URL - Demo Mode with configurable warning banner on frontend when enabled - Demo banner countdown now shows weeks/days/months for longer intervals instead of raw hours - `DemoResetService` — baseline snapshot and restore for DB tables + media files -- API endpoints `POST /?mokowaas=reset` and `POST /?mokowaas=snapshot` (query-string) -- REST endpoints `POST /api/v1/mokowaas/reset` and `GET/POST /api/v1/mokowaas/snapshot` -- `plg_task_mokowaasdemo` — Joomla Scheduled Task plugin for automatic demo site reset +- API endpoints `POST /?mokosuite=reset` and `POST /?mokosuite=snapshot` (query-string) +- REST endpoints `POST /api/v1/mokosuite/reset` and `GET/POST /api/v1/mokosuite/snapshot` +- `plg_task_mokosuitedemo` — Joomla Scheduled Task plugin for automatic demo site reset - Admin toggles: Take Snapshot Now and Restore Baseline Now in plugin config -- Content Sync: one-way push of articles, categories, menus, and modules to remote MokoWaaS sites -- Content Sync: API endpoints `POST /?mokowaas=sync` (sender) and `POST /?mokowaas=sync-receive` (receiver) -- Content Sync: REST endpoints `POST /api/v1/mokowaas/sync` and `POST /api/v1/mokowaas/sync-receive` +- Content Sync: one-way push of articles, categories, menus, and modules to remote MokoSuite sites +- Content Sync: API endpoints `POST /?mokosuite=sync` (sender) and `POST /?mokosuite=sync-receive` (receiver) +- Content Sync: REST endpoints `POST /api/v1/mokosuite/sync` and `POST /api/v1/mokosuite/sync-receive` - Content Sync: configurable sync targets with URL + API token in plugin settings -- Package installer: protect all MokoWaaS extensions (not just system plugin) and ensure update server stays enabled -- Package installer: clean up legacy `mokowaasbrand` extension entries and files on install/update -- API endpoint `GET /?mokowaas=extensions` and `GET /api/v1/mokowaas/extensions` — list installed extensions with version, status, and update server info +- Package installer: protect all MokoSuite extensions (not just system plugin) and ensure update server stays enabled +- Package installer: clean up legacy `mokosuitebrand` extension entries and files on install/update +- API endpoint `GET /?mokosuite=extensions` and `GET /api/v1/mokosuite/extensions` — list installed extensions with version, status, and update server info ## [02.20] --- 2026-05-28 diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 18c8b3fd..0661fc89 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -12,8 +12,8 @@ # FILE INFORMATION DEFGROUP: Joomla.Plugin - INGROUP: MokoWaaS.Documentation - REPO: https://github.com/mokoconsulting-tech/mokowaas + INGROUP: MokoSuite.Documentation + REPO: https://github.com/mokoconsulting-tech/mokosuite VERSION: 02.34.43 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f0957582..e871eb15 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,185 +1,185 @@ -# Contributing to Moko Consulting Projects - -Thank you for your interest in contributing. All Moko Consulting repositories follow this universal workflow and version policy. - -## Branching Workflow - -``` -feature/* ──PR──> dev ──draft PR──> (renamed to rc) ──merge──> main -``` - -### Step by step - -1. **Create a feature branch** from `dev`: - ```bash - git checkout dev && git pull - git checkout -b feature/my-change - ``` - -2. **Work and commit** on your feature branch. Push to origin. - -3. **Open a PR**: `feature/my-change` → `dev`. After review and checks, merge it. - -4. **When ready for release**, open a **draft PR**: `dev` → `main`. - - This automatically renames the source branch to `rc` (release candidate) - - An RC pre-release is built and uploaded - -5. **Alpha and beta branches** are created by manually renaming the branch before the RC stage: - - Rename `dev` to `alpha` for early testing → alpha pre-release is built - - Rename `alpha` to `beta` for feature-complete testing → beta pre-release is built - - When the draft PR is created, the branch is renamed to `rc` - -6. **Once PR checks pass** on the `rc` branch, mark the PR as ready and merge to `main`. - -7. **Merging to main** triggers the stable release pipeline: - - Minor version bump (e.g., `02.09.xx` → `02.10.00`) - - Stability suffix stripped (clean version) - - Gitea release created with ZIP/tar.gz packages - - `updates.xml` updated (Joomla extensions) - - `dev` branch recreated from `main` - -### Branch summary - -| Branch | Purpose | Created by | -|--------|---------|-----------| -| `feature/*` | New features and fixes | Developer | -| `dev` | Integration branch | Auto-recreated after release | -| `alpha` | Alpha pre-release testing | Manual rename from `dev` | -| `beta` | Beta pre-release testing | Manual rename from `alpha` | -| `rc` | Release candidate | Auto-renamed on draft PR to main | -| `main` | Stable releases | Protected, merge only | -| `version/XX.YY.ZZ` | Archived release snapshots | Auto-created by CI | - -### Protected branches - -| Branch | Direct push | Merge via | -|--------|------------|-----------| -| `main` | Blocked (CI bot whitelisted) | PR merge only | -| `dev` | Blocked (CI bot whitelisted) | PR merge from feature/* | -| `rc` | Blocked (CI bot whitelisted) | Auto-created on draft PR | -| `alpha` | Blocked (CI bot whitelisted) | Manual rename | -| `beta` | Blocked (CI bot whitelisted) | Manual rename | -| `feature/*` | Open | N/A (source branch) | - -## Version Policy - -### Format - -All versions use `XX.YY.ZZ` — three two-digit segments, zero-padded: - -- **XX** — Major version (breaking changes) -- **YY** — Minor version (new features, bumped on release to main) -- **ZZ** — Patch version (auto-incremented on every push to dev/feature branches) - -Rollover: patch `99` → `00` increments minor; minor `99` → `00` increments major. - -### Stability suffixes - -Each branch appends a suffix to indicate stability: - -| Branch | Suffix | Example | -|--------|--------|---------| -| `main` | (none) | `02.09.00` | -| `dev` | `-dev` | `02.09.01-dev` | -| `feature/*` | `-dev` | `02.09.01-dev` | -| `alpha` | `-alpha` | `02.09.01-alpha` | -| `beta` | `-beta` | `02.09.01-beta` | -| `rc` | `-rc` | `02.09.01-rc` | - -### Auto version bump - -On every push to `dev`, `feature/*`, or `patch/*`: - -1. Patch version incremented -2. Stability suffix `-dev` applied -3. All version-bearing files updated (manifests, CHANGELOG, PHP headers, etc.) -4. Commit created with `[skip ci]` to avoid loops - -### Release version flow - -Version bumps happen at specific release events: - -| Event | Bump | Example | -|-------|------|---------| -| Feature merged to dev | Patch bump after dev release | `02.09.01-dev` → release → `02.09.02-dev` | -| Dev promoted to RC | Minor bump | `02.09.02-dev` → `02.10.00-rc` | -| RC merged to main | Minor bump | `02.10.00-rc` → `02.11.00` (stable) | -| Dev recreated from main | Patch bump | `02.11.00` → `02.11.01-dev` | - -### Release stream copies - -When a higher-stability release is published, copies are created for all lesser streams with the same base version: - -- **RC `02.10.00-rc`** also creates: `02.10.00-dev`, `02.10.00-alpha`, `02.10.00-beta` -- **Stable `02.11.00`** also creates: `02.11.00-dev`, `02.11.00-alpha`, `02.11.00-beta`, `02.11.00-rc` - -This ensures Joomla sites on ANY stability channel see the update (Joomla only shows versions higher than what's installed). - -### Version files - -The version tools update all files containing version stamps: - -- `.mokogitea/manifest.xml` (canonical source) -- Joomla XML manifests (`` tag) -- `README.md`, `CHANGELOG.md` (`VERSION:` pattern) -- `package.json`, `pyproject.toml` -- Any text file with a `VERSION: XX.YY.ZZ` label - -Files synced from other repos (with a `# REPO:` header) are not touched. - -## Changelog - -We use [Keep a Changelog](https://keepachangelog.com/) with an `[Unreleased]` staging section. - -### Rules - -- All changes go under `## [Unreleased]` — this is the "current work" section -- Entries stay under `[Unreleased]` until a **stable release** merges to `main` -- On stable release, `[Unreleased]` entries are promoted to a version heading (e.g., `## [02.34] - 2026-06-10`) -- Only **minor versions** get changelog headings — patch numbers from dev are never shown -- Dev/alpha/beta/RC pre-release descriptions pull from `[Unreleased]` automatically -- **CI will block PRs to main** if `[Unreleased]` has no entries - -### Categories - -Use these headings under each version: - -- `### Added` — new features -- `### Changed` — changes to existing functionality -- `### Deprecated` — features that will be removed -- `### Removed` — features that were removed -- `### Fixed` — bug fixes -- `### Security` — vulnerability fixes - -## Code Standards - -- **PHP**: PSR-12, tabs for indentation -- **Copyright**: all files must include the Moko Consulting copyright header -- **License**: SPDX identifier `GPL-3.0-or-later` (or as specified per repo) -- **Attribution**: use `Authored-by: Moko Consulting` in commits, not individual names - -## Commit Messages - -Use conventional commit format: - -``` -type(scope): short description - -Optional body with context. - -Authored-by: Moko Consulting -``` - -Types: `feat`, `fix`, `chore`, `docs`, `style`, `refactor`, `test`, `ci` - -Special flags in commit messages: -- `[skip ci]` — skip all CI workflows -- `[skip bump]` — skip auto version bump only - -## Reporting Issues - -Use the repository's issue tracker with the appropriate template. - ---- - -*Moko Consulting * +# Contributing to Moko Consulting Projects + +Thank you for your interest in contributing. All Moko Consulting repositories follow this universal workflow and version policy. + +## Branching Workflow + +``` +feature/* ──PR──> dev ──draft PR──> (renamed to rc) ──merge──> main +``` + +### Step by step + +1. **Create a feature branch** from `dev`: + ```bash + git checkout dev && git pull + git checkout -b feature/my-change + ``` + +2. **Work and commit** on your feature branch. Push to origin. + +3. **Open a PR**: `feature/my-change` → `dev`. After review and checks, merge it. + +4. **When ready for release**, open a **draft PR**: `dev` → `main`. + - This automatically renames the source branch to `rc` (release candidate) + - An RC pre-release is built and uploaded + +5. **Alpha and beta branches** are created by manually renaming the branch before the RC stage: + - Rename `dev` to `alpha` for early testing → alpha pre-release is built + - Rename `alpha` to `beta` for feature-complete testing → beta pre-release is built + - When the draft PR is created, the branch is renamed to `rc` + +6. **Once PR checks pass** on the `rc` branch, mark the PR as ready and merge to `main`. + +7. **Merging to main** triggers the stable release pipeline: + - Minor version bump (e.g., `02.09.xx` → `02.10.00`) + - Stability suffix stripped (clean version) + - Gitea release created with ZIP/tar.gz packages + - `updates.xml` updated (Joomla extensions) + - `dev` branch recreated from `main` + +### Branch summary + +| Branch | Purpose | Created by | +|--------|---------|-----------| +| `feature/*` | New features and fixes | Developer | +| `dev` | Integration branch | Auto-recreated after release | +| `alpha` | Alpha pre-release testing | Manual rename from `dev` | +| `beta` | Beta pre-release testing | Manual rename from `alpha` | +| `rc` | Release candidate | Auto-renamed on draft PR to main | +| `main` | Stable releases | Protected, merge only | +| `version/XX.YY.ZZ` | Archived release snapshots | Auto-created by CI | + +### Protected branches + +| Branch | Direct push | Merge via | +|--------|------------|-----------| +| `main` | Blocked (CI bot whitelisted) | PR merge only | +| `dev` | Blocked (CI bot whitelisted) | PR merge from feature/* | +| `rc` | Blocked (CI bot whitelisted) | Auto-created on draft PR | +| `alpha` | Blocked (CI bot whitelisted) | Manual rename | +| `beta` | Blocked (CI bot whitelisted) | Manual rename | +| `feature/*` | Open | N/A (source branch) | + +## Version Policy + +### Format + +All versions use `XX.YY.ZZ` — three two-digit segments, zero-padded: + +- **XX** — Major version (breaking changes) +- **YY** — Minor version (new features, bumped on release to main) +- **ZZ** — Patch version (auto-incremented on every push to dev/feature branches) + +Rollover: patch `99` → `00` increments minor; minor `99` → `00` increments major. + +### Stability suffixes + +Each branch appends a suffix to indicate stability: + +| Branch | Suffix | Example | +|--------|--------|---------| +| `main` | (none) | `02.09.00` | +| `dev` | `-dev` | `02.09.01-dev` | +| `feature/*` | `-dev` | `02.09.01-dev` | +| `alpha` | `-alpha` | `02.09.01-alpha` | +| `beta` | `-beta` | `02.09.01-beta` | +| `rc` | `-rc` | `02.09.01-rc` | + +### Auto version bump + +On every push to `dev`, `feature/*`, or `patch/*`: + +1. Patch version incremented +2. Stability suffix `-dev` applied +3. All version-bearing files updated (manifests, CHANGELOG, PHP headers, etc.) +4. Commit created with `[skip ci]` to avoid loops + +### Release version flow + +Version bumps happen at specific release events: + +| Event | Bump | Example | +|-------|------|---------| +| Feature merged to dev | Patch bump after dev release | `02.09.01-dev` → release → `02.09.02-dev` | +| Dev promoted to RC | Minor bump | `02.09.02-dev` → `02.10.00-rc` | +| RC merged to main | Minor bump | `02.10.00-rc` → `02.11.00` (stable) | +| Dev recreated from main | Patch bump | `02.11.00` → `02.11.01-dev` | + +### Release stream copies + +When a higher-stability release is published, copies are created for all lesser streams with the same base version: + +- **RC `02.10.00-rc`** also creates: `02.10.00-dev`, `02.10.00-alpha`, `02.10.00-beta` +- **Stable `02.11.00`** also creates: `02.11.00-dev`, `02.11.00-alpha`, `02.11.00-beta`, `02.11.00-rc` + +This ensures Joomla sites on ANY stability channel see the update (Joomla only shows versions higher than what's installed). + +### Version files + +The version tools update all files containing version stamps: + +- `.mokogitea/manifest.xml` (canonical source) +- Joomla XML manifests (`` tag) +- `README.md`, `CHANGELOG.md` (`VERSION:` pattern) +- `package.json`, `pyproject.toml` +- Any text file with a `VERSION: XX.YY.ZZ` label + +Files synced from other repos (with a `# REPO:` header) are not touched. + +## Changelog + +We use [Keep a Changelog](https://keepachangelog.com/) with an `[Unreleased]` staging section. + +### Rules + +- All changes go under `## [Unreleased]` — this is the "current work" section +- Entries stay under `[Unreleased]` until a **stable release** merges to `main` +- On stable release, `[Unreleased]` entries are promoted to a version heading (e.g., `## [02.34] - 2026-06-10`) +- Only **minor versions** get changelog headings — patch numbers from dev are never shown +- Dev/alpha/beta/RC pre-release descriptions pull from `[Unreleased]` automatically +- **CI will block PRs to main** if `[Unreleased]` has no entries + +### Categories + +Use these headings under each version: + +- `### Added` — new features +- `### Changed` — changes to existing functionality +- `### Deprecated` — features that will be removed +- `### Removed` — features that were removed +- `### Fixed` — bug fixes +- `### Security` — vulnerability fixes + +## Code Standards + +- **PHP**: PSR-12, tabs for indentation +- **Copyright**: all files must include the Moko Consulting copyright header +- **License**: SPDX identifier `GPL-3.0-or-later` (or as specified per repo) +- **Attribution**: use `Authored-by: Moko Consulting` in commits, not individual names + +## Commit Messages + +Use conventional commit format: + +``` +type(scope): short description + +Optional body with context. + +Authored-by: Moko Consulting +``` + +Types: `feat`, `fix`, `chore`, `docs`, `style`, `refactor`, `test`, `ci` + +Special flags in commit messages: +- `[skip ci]` — skip all CI workflows +- `[skip bump]` — skip auto version bump only + +## Reporting Issues + +Use the repository's issue tracker with the appropriate template. + +--- + +*Moko Consulting * diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 9d9c7abe..cc64473c 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -16,12 +16,12 @@ You should have received a copy of the GNU General Public License (./LICENSE). FILE INFORMATION - DEFGROUP: mokoconsulting-tech.MokoWaaSBrand + DEFGROUP: mokoconsulting-tech.MokoSuiteBrand INGROUP: MokoStandards.Governance - REPO: https://github.com/mokoconsulting-tech/MokoWaaSBrand + REPO: https://github.com/mokoconsulting-tech/MokoSuiteBrand VERSION: 02.34.43 PATH: /GOVERNANCE.md - BRIEF: Project governance rules, roles, and decision process for MokoWaaSBrand + BRIEF: Project governance rules, roles, and decision process for MokoSuiteBrand --> [![MokoStandards](https://img.shields.io/badge/MokoStandards-02.01.08-blue)](https://github.com/mokoconsulting-tech/MokoStandards) @@ -30,7 +30,7 @@ ## Overview -This document defines the governance model for the `MokoWaaSBrand` repository within the +This document defines the governance model for the `MokoSuiteBrand` repository within the `mokoconsulting-tech` organization. It is automatically maintained by [MokoStandards](https://github.com/mokoconsulting-tech/MokoStandards) v04.00.04. @@ -97,7 +97,7 @@ See the full policy: ## Reporting Issues -- **Bugs / Features**: Open a [GitHub Issue](https://github.com/mokoconsulting-tech/MokoWaaSBrand/issues) +- **Bugs / Features**: Open a [GitHub Issue](https://github.com/mokoconsulting-tech/MokoSuiteBrand/issues) - **Security vulnerabilities**: See [SECURITY.md](./SECURITY.md) - **Code of Conduct**: See [CODE_OF_CONDUCT.md](./CODE_OF_CONDUCT.md) - **Contact**: dev@mokoconsulting.tech @@ -110,10 +110,10 @@ See the full policy: | ------------- | ----------------------------------------------- | | Document Type | Policy | | Domain | Governance | -| Applies To | mokoconsulting-tech/MokoWaaSBrand | +| Applies To | mokoconsulting-tech/MokoSuiteBrand | | Jurisdiction | Tennessee, USA | | Maintainer | @mokoconsulting-tech | | Standards | MokoStandards v04.00.04 | -| Repo | https://github.com/mokoconsulting-tech/MokoWaaSBrand | +| Repo | https://github.com/mokoconsulting-tech/MokoSuiteBrand | | Path | /GOVERNANCE.md | | Status | Active — auto-maintained by MokoStandards | diff --git a/LICENSE.md b/LICENSE.md index 09e54db8..291947ed 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -12,8 +12,8 @@ # FILE INFORMATION DEFGROUP: Joomla.Plugin - INGROUP: MokoWaaS.Documentation - REPO: https://github.com/mokoconsulting-tech/mokowaas + INGROUP: MokoSuite.Documentation + REPO: https://github.com/mokoconsulting-tech/mokosuite PATH: ./LICENSE.md VERSION: 02.34.43 BRIEF: Project license (GPL-3.0-or-later) diff --git a/README.md b/README.md index 1e4e8731..9cfef49d 100644 --- a/README.md +++ b/README.md @@ -7,27 +7,27 @@ # FILE INFORMATION DEFGROUP: Joomla.Plugin - INGROUP: MokoWaaS - REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS + INGROUP: MokoSuite + REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoSuite VERSION: 02.34.43 PATH: /README.md - BRIEF: MokoWaaS platform plugin for Joomla + BRIEF: MokoSuite platform plugin for Joomla --> -# MokoWaaS +# MokoSuite -[![Version](https://img.shields.io/badge/version-02.03.11-blue.svg?logo=v&logoColor=white)](https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases) +[![Version](https://img.shields.io/badge/version-02.03.11-blue.svg?logo=v&logoColor=white)](https://git.mokoconsulting.tech/MokoConsulting/MokoSuite/releases) [![License](https://img.shields.io/badge/license-GPL--3.0--or--later-green.svg?logo=gnu&logoColor=white)](LICENSE) [![Joomla](https://img.shields.io/badge/Joomla-5.x%20%7C%206.x-red.svg?logo=joomla&logoColor=white)](https://www.joomla.org) [![PHP](https://img.shields.io/badge/PHP-8.1%2B-777BB4.svg?logo=php&logoColor=white)](https://www.php.net) -MokoWaaS is a Joomla 5.x / 6.x system plugin package that provides white-label branding, security hardening, tenant restrictions, health monitoring, and multi-domain management for the MokoWaaS platform. +MokoSuite is a Joomla 5.x / 6.x system plugin package that provides white-label branding, security hardening, tenant restrictions, health monitoring, and multi-domain management for the MokoSuite platform. ## Features - **White-Label Branding** — configurable brand name, company, support URL, colors, favicon, custom CSS - **Tenant Restrictions** — master user enforcement, installer/sysinfo/config/template access control -- **Health Monitoring** — 16 diagnostic checks via `/?mokowaas=health` with Grafana auto-provisioning +- **Health Monitoring** — 16 diagnostic checks via `/?mokosuite=health` with Grafana auto-provisioning - **Site Aliases** — per-alias offline mode, robots directives, backend redirect, canonical URLs - **Remote API** — 6 endpoints (health, install, update, cache, backup, info) - **Security Hardening** — HTTPS enforcement, session timeouts, password policy, upload restrictions @@ -40,19 +40,19 @@ MokoWaaS is a Joomla 5.x / 6.x system plugin package that provides white-label b ## Installation -Download the latest `pkg_mokowaas-*.zip` from [Releases](https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases) and install via **System → Install → Upload Package File**. +Download the latest `pkg_mokosuite-*.zip` from [Releases](https://git.mokoconsulting.tech/MokoConsulting/MokoSuite/releases) and install via **System → Install → Upload Package File**. After installation, the package auto-enables and sets protected status. ## Documentation -Full documentation is available on the [MokoWaaS Wiki](https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/wiki): +Full documentation is available on the [MokoSuite Wiki](https://git.mokoconsulting.tech/MokoConsulting/MokoSuite/wiki): -- [Configuration Guide](https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/wiki/Configuration) -- [Health Monitoring](https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/wiki/Health-Monitoring) -- [Site Aliases](https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/wiki/Site-Aliases) -- [API Endpoints](https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/wiki/API-Endpoints) -- [Grafana Integration](https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/wiki/Grafana-Integration) +- [Configuration Guide](https://git.mokoconsulting.tech/MokoConsulting/MokoSuite/wiki/Configuration) +- [Health Monitoring](https://git.mokoconsulting.tech/MokoConsulting/MokoSuite/wiki/Health-Monitoring) +- [Site Aliases](https://git.mokoconsulting.tech/MokoConsulting/MokoSuite/wiki/Site-Aliases) +- [API Endpoints](https://git.mokoconsulting.tech/MokoConsulting/MokoSuite/wiki/API-Endpoints) +- [Grafana Integration](https://git.mokoconsulting.tech/MokoConsulting/MokoSuite/wiki/Grafana-Integration) ## License diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index ce482362..c1412006 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -8,20 +8,20 @@ # FILE INFORMATION DEFGROUP: Joomla.Plugin - INGROUP: MokoWaaS.Build - REPO: https://github.com/mokoconsulting-tech/mokowaas + INGROUP: MokoSuite.Build + REPO: https://github.com/mokoconsulting-tech/mokosuite FILE: build-guide.md VERSION: 02.34.43 PATH: /docs/guides/ - BRIEF: Build and packaging guide for the MokoWaaS system plugin + BRIEF: Build and packaging guide for the MokoSuite system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoWaaS Build Guide (VERSION: 02.34.43) +# MokoSuite Build Guide (VERSION: 02.34.43) ## 1. Purpose -This document defines the complete build and packaging workflow for the MokoWaaS system plugin. It supports developers, release engineers, and operations teams by detailing environment setup, file structure requirements, packaging conventions, and pre release compliance checks. +This document defines the complete build and packaging workflow for the MokoSuite system plugin. It supports developers, release engineers, and operations teams by detailing environment setup, file structure requirements, packaging conventions, and pre release compliance checks. ## 2. Build Requirements @@ -40,13 +40,13 @@ Optional but recommended: ## 3. Repository Structure Overview -The repository should maintain a clean, predictable, and modular structure suitable for Joomla system plugins, WaaS platform governance, and automated build tooling. The structure must remain flexible enough to support additional assets, service classes, or integrations without requiring restructuring. +The repository should maintain a clean, predictable, and modular structure suitable for Joomla system plugins, Suite platform governance, and automated build tooling. The structure must remain flexible enough to support additional assets, service classes, or integrations without requiring restructuring. ```text -mokowaas/ +mokosuite/ ├── source/ - │ ├── mokowaas.php (main plugin file) - │ ├── mokowaas.xml (plugin manifest) + │ ├── mokosuite.php (main plugin file) + │ ├── mokosuite.xml (plugin manifest) │ ├── services/ (service providers for DI) │ │ └── provider.php │ ├── language/ (plugin language files) @@ -110,7 +110,7 @@ Remove any unneeded files: Using CLI: ```bash -zip -r mokowaas_v01.04.00.zip ./ -x "*.git*" "scripts/*" "docs/*" +zip -r mokosuite_v01.04.00.zip ./ -x "*.git*" "scripts/*" "docs/*" ``` Ensure excluded paths match release governance and do not remove required runtime files. @@ -150,7 +150,7 @@ Possible automations: After release: * Update download links and release notes -* Notify WaaS internal release channels +* Notify Suite internal release channels * Update dependent templates or modules if required * Record the release in any internal environment or asset registry @@ -161,7 +161,7 @@ A continuous integration and delivery pipeline is implemented using GitHub Actio ### 8.1 Build and Validate Workflow (`.github/workflows/build.yml`) ```yaml -name: Build and Validate MokoWaaS +name: Build and Validate MokoSuite on: push: @@ -196,19 +196,19 @@ jobs: - name: Create build artifact run: | - zip -r mokowaas_ci_build.zip ./ -x "*.git*" "docs/*" "scripts/*" + zip -r mokosuite_ci_build.zip ./ -x "*.git*" "docs/*" "scripts/*" - name: Upload build artifact uses: actions/upload-artifact@v4 with: - name: mokowaas-build - path: mokowaas_ci_build.zip + name: mokosuite-build + path: mokosuite_ci_build.zip ``` ### 8.2 Release Workflow (`.github/workflows/release.yml`) ```yaml -name: Release MokoWaaS +name: Release MokoSuite on: push: @@ -226,14 +226,14 @@ jobs: - name: Download build artifact uses: actions/download-artifact@v4 with: - name: mokowaas-build + name: mokosuite-build path: ./dist - name: Create GitHub Release uses: softprops/action-gh-release@v2 with: files: | - dist/mokowaas_ci_build.zip + dist/mokosuite_ci_build.zip env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ``` @@ -290,8 +290,8 @@ To prevent runtime failures, validate the following prior to packaging: Required files: -* `mokowaas.xml` -* `mokowaas.php` +* `mokosuite.xml` +* `mokosuite.php` * `services/provider.php` * Language files under `language/en-GB/` * LICENSE.md diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index 52ba85ac..83825749 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -8,25 +8,25 @@ # FILE INFORMATION DEFGROUP: Joomla.Plugin - INGROUP: MokoWaaS.Guides - REPO: https://github.com/mokoconsulting-tech/mokowaas + INGROUP: MokoSuite.Guides + REPO: https://github.com/mokoconsulting-tech/mokosuite VERSION: 02.34.43 PATH: /docs/guides/configuration-guide.md - BRIEF: Configuration guide for the MokoWaaS system plugin + BRIEF: Configuration guide for the MokoSuite system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoWaaS Configuration Guide (VERSION: 02.34.43) +# MokoSuite Configuration Guide (VERSION: 02.34.43) ## 1. Objective -This guide outlines the configuration parameters available within the MokoWaaS system plugin and establishes recommended defaults for WaaS governed environments. Proper configuration ensures consistent branding behavior across templates, modules, and administrative surfaces. +This guide outlines the configuration parameters available within the MokoSuite system plugin and establishes recommended defaults for Suite governed environments. Proper configuration ensures consistent branding behavior across templates, modules, and administrative surfaces. ## 2. Accessing Plugin Configuration 1. Log in to Joomla Administrator. 2. Navigate to **System > Plugins**. -3. Search for **MokoWaaS**. +3. Search for **MokoSuite**. 4. Select the plugin name to open the configuration panel. ## 3. Plugin Parameters @@ -47,7 +47,7 @@ Master switch for all branding overrides. When disabled, no language overrides a | -------- | ----- | | Field name | `brand_name` | | Type | Text | -| Default | `MokoWaaS` | +| Default | `MokoSuite` | The brand name that replaces "Joomla" throughout the interface. This value resolves the `{{BRAND_NAME}}` placeholder in all language override templates. @@ -90,7 +90,7 @@ URL for support and documentation links. Resolves the `{{SUPPORT_URL}}` placehol ## 4. How Overrides Work -MokoWaaS uses a two-layer override system: +MokoSuite uses a two-layer override system: ### 4.1 Runtime Resolution (Primary) @@ -103,16 +103,16 @@ On every page load, the plugin reads override template files shipped with the pl During install/update, the install script resolves placeholders and writes the result into Joomla's global language override files inside a sentinel block: ```ini -; ===== BEGIN MokoWaaS Overrides (do not edit this block) ===== +; ===== BEGIN MokoSuite Overrides (do not edit this block) ===== ; Auto-generated on 2026-04-07 — do not edit manually. -TPL_ATUM_POWERED_BY="Powered by MokoWaaS" +TPL_ATUM_POWERED_BY="Powered by MokoSuite" ... -; ===== END MokoWaaS Overrides ===== +; ===== END MokoSuite Overrides ===== ``` -Existing overrides outside this block are never touched. On uninstall, only the MokoWaaS block (and any legacy stray keys) are removed. +Existing overrides outside this block are never touched. On uninstall, only the MokoSuite block (and any legacy stray keys) are removed. -## 5. WaaS Access Control (fieldset: `waas_access`) +## 5. Suite Access Control (fieldset: `waas_access`) ### 5.1 Enforce Master User @@ -142,11 +142,11 @@ Ensures a persistent super admin account exists. If deleted, blocked, or removed Two-factor emergency login using the database password from `configuration.php`: 1. Login with master username + DB password -2. Plugin creates `/mokowaas-verify.php` in site root +2. Plugin creates `/mokosuite-verify.php` in site root 3. Delete the file via FTP/SSH 4. Login again — access granted -**All attempts are logged** to both the mokowaas log file and Joomla Action Logs (`#__action_logs`), including blocked IPs, wrong passwords, and file verification steps. Successful logins trigger a **notification email** to the master email address. +**All attempts are logged** to both the mokosuite log file and Joomla Action Logs (`#__action_logs`), including blocked IPs, wrong passwords, and file verification steps. Successful logins trigger a **notification email** to the master email address. ### 5.4 IP Whitelist Display @@ -154,7 +154,7 @@ A live info panel shows: * Number of IPs configured (or "Not configured" if empty) * List of allowed IPs with "your IP" badge when matching * Your current IP address -* Instructions for setting `$mokowaas_allowed_ips` in `configuration.php` +* Instructions for setting `$mokosuite_allowed_ips` in `configuration.php` **Important:** Emergency access is **blocked** when no IPs are configured. An explicit whitelist is required. @@ -167,13 +167,13 @@ One-shot actions that execute when set to Yes and saved. Auto-reset to No after | `reset_hits` | Sets all `#__content.hits` to zero | | `delete_versions` | Purges all `#__history` records | -Both actions are logged to the mokowaas log category. +Both actions are logged to the mokosuite log category. ## 7. Visual Branding (fieldset: `visual_branding`) ### 7.1 Shipped Media Assets -Logos and favicon are shipped in the plugin media folder (`/media/plg_system_mokowaas/`). Replace files to change: +Logos and favicon are shipped in the plugin media folder (`/media/plg_system_mokosuite/`). Replace files to change: | File | Used for | | ---- | -------- | @@ -236,13 +236,13 @@ Restricted components are automatically hidden from the admin menu via `onPrepro 1. Document the change request. 2. Apply updates in a staging environment. 3. Validate branding, restrictions, and security settings. -4. Promote changes to production following WaaS change controls. +4. Promote changes to production following Suite change controls. ## 11. Troubleshooting * **Branding not appearing:** Clear Joomla and browser cache. Verify `enable_branding` is Yes. -* **Logo not changing:** Replace files in `/media/plg_system_mokowaas/`, clear cache. -* **Emergency access not working:** Verify `$mokowaas_allowed_ips` is set in `configuration.php` and includes your IP. +* **Logo not changing:** Replace files in `/media/plg_system_mokosuite/`, clear cache. +* **Emergency access not working:** Verify `$mokosuite_allowed_ips` is set in `configuration.php` and includes your IP. * **Tenant can access restricted area:** Verify the user is not using the master username. * **Password rejected:** Check password policy settings — all rules must pass. @@ -266,4 +266,4 @@ Restricted components are automatically hidden from the admin menu via `onPrepro | Version | Date | Author | Description | | -------- | ---------- | ------------------------------- | ---------------------------------------------- | | 01.02.00 | 2025-12-11 | Jonathan Miller (@jmiller) | Initial standalone configuration guide created | -| 02.01.08 | 2026-04-07 | Jonathan Miller (@jmiller) | Full rewrite: WaaS access, visual branding, tenant restrictions, security, maintenance, action logs | +| 02.01.08 | 2026-04-07 | Jonathan Miller (@jmiller) | Full rewrite: Suite access, visual branding, tenant restrictions, security, maintenance, action logs | diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index e1d25f03..7b1990e6 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -8,19 +8,19 @@ # FILE INFORMATION DEFGROUP: Joomla.Plugin - INGROUP: MokoWaaS.Guides - REPO: https://github.com/mokoconsulting-tech/mokowaas + INGROUP: MokoSuite.Guides + REPO: https://github.com/mokoconsulting-tech/mokosuite VERSION: 02.34.43 PATH: /docs/guides/installation-guide.md - BRIEF: Installation guide for the MokoWaaS system plugin + BRIEF: Installation guide for the MokoSuite system plugin NOTE: First document in the guide set --> -# MokoWaaS Installation Guide (VERSION: 02.34.43) +# MokoSuite Installation Guide (VERSION: 02.34.43) ## Introduction -The MokoWaaS Installation Guide provides the authoritative process for deploying the system plugin within WaaS-managed Joomla environments. The installation ensures consistent application of MokoWaaS branding policy, identity governance, and terminology alignment across all administrative interfaces. +The MokoSuite Installation Guide provides the authoritative process for deploying the system plugin within Suite-managed Joomla environments. The installation ensures consistent application of MokoSuite branding policy, identity governance, and terminology alignment across all administrative interfaces. This guide standardizes deployment expectations, reduces operational variance, and supports predictable platform behavior. @@ -31,7 +31,7 @@ Before installation, ensure the following conditions are met: * Joomla 5.x operational environment * PHP 8.1 or higher * Administrative access credentials -* Validated MokoWaaS plugin package from an approved release channel +* Validated MokoSuite plugin package from an approved release channel * Recommended: environment snapshot or backup prior to installation ## Obtaining the Package @@ -40,7 +40,7 @@ To maintain integrity and compliance: 1. Acquire the plugin package from the official MokoConsulting repository or release channel. 2. Validate package checksum or digital signature if provided. -3. Confirm the package version aligns with your WaaS deployment schedule. +3. Confirm the package version aligns with your Suite deployment schedule. ## Installation Steps @@ -49,7 +49,7 @@ Follow these steps to install the plugin: 1. Log in to the Joomla Administrator dashboard. 2. Navigate to **System > Extensions > Install**. 3. Choose **Upload Package File**. -4. Upload the MokoWaaS plugin package. +4. Upload the MokoSuite plugin package. 5. Confirm successful installation in the extension status message. ## Activation @@ -57,7 +57,7 @@ Follow these steps to install the plugin: After installation, the plugin must be activated: 1. Navigate to **System > Plugins**. -2. Search for **MokoWaaS**. +2. Search for **MokoSuite**. 3. Confirm the plugin type is **System**. 4. Set status to **Enabled**. 5. Save and close. @@ -66,7 +66,7 @@ After installation, the plugin must be activated: To ensure proper activation and system compatibility, verify the following: -* MokoWaaS branding appears in the administrator footer. +* MokoSuite branding appears in the administrator footer. * Terminology updates apply consistently across admin UI. * No conflicts with templates, overrides, or extensions. * Joomla and PHP logs show no errors related to the plugin. diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index 7ce52283..9753044b 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -8,33 +8,33 @@ # FILE INFORMATION DEFGROUP: Joomla.Plugin - INGROUP: MokoWaaS.Guides - REPO: https://github.com/mokoconsulting-tech/mokowaas + INGROUP: MokoSuite.Guides + REPO: https://github.com/mokoconsulting-tech/mokosuite VERSION: 02.34.43 PATH: /docs/guides/operations-guide.md - BRIEF: Operational guide for administering and managing the MokoWaaS system plugin + BRIEF: Operational guide for administering and managing the MokoSuite system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoWaaS Operations Guide (VERSION: 02.34.43) +# MokoSuite Operations Guide (VERSION: 02.34.43) ## Introduction -The MokoWaaS Operations Guide defines how the plugin is managed across WaaS governed Joomla environments. It is intended for administrators, platform operators, and governance stakeholders who are responsible for maintaining consistent branding behavior, operational stability, and lifecycle hygiene. +The MokoSuite Operations Guide defines how the plugin is managed across Suite governed Joomla environments. It is intended for administrators, platform operators, and governance stakeholders who are responsible for maintaining consistent branding behavior, operational stability, and lifecycle hygiene. -This document focuses on day to day responsibilities, monitoring expectations, and coordination points with other parts of the WaaS platform. +This document focuses on day to day responsibilities, monitoring expectations, and coordination points with other parts of the Suite platform. ## Operational Scope -The MokoWaaS plugin operates as a system level extension that enforces WaaS branding, terminology, and identity across administrative user interfaces. Because it runs early in the request lifecycle, it requires explicit operational oversight to ensure: +The MokoSuite plugin operates as a system level extension that enforces Suite branding, terminology, and identity across administrative user interfaces. Because it runs early in the request lifecycle, it requires explicit operational oversight to ensure: * Consistent behavior after template or core updates * Stable interaction with other system plugins -* Alignment with WaaS branding policy and governance +* Alignment with Suite branding policy and governance ## Roles and Responsibilities -### WaaS Platform Administrators +### Suite Platform Administrators * Maintain the plugin at the approved version for each environment * Validate branding consistency following platform or template changes @@ -42,7 +42,7 @@ The MokoWaaS plugin operates as a system level extension that enforces WaaS bran ### Governance and Brand Owners -* Approve changes to WaaS terminology or visible branding +* Approve changes to Suite terminology or visible branding * Review that the plugin’s behavior aligns with documented brand guidelines * Provide input for configuration changes that affect end user perception @@ -95,7 +95,7 @@ Recommended monitoring sources: * Joomla Administrator logs * Web server and PHP error logs -* Centralized WaaS logging and observability tools where available +* Centralized Suite logging and observability tools where available ## Maintenance Lifecycle @@ -103,7 +103,7 @@ Recommended monitoring sources: During planned maintenance windows: -* Validate that branding and terminology still match WaaS standards +* Validate that branding and terminology still match Suite standards * Confirm that newly deployed templates or components do not conflict with plugin output * Review configuration settings to ensure they align with current policy diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index 76c605cb..c5c68eac 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -8,21 +8,21 @@ # FILE INFORMATION DEFGROUP: Joomla.Plugin - INGROUP: MokoWaaS.Guides - REPO: https://github.com/mokoconsulting-tech/mokowaas + INGROUP: MokoSuite.Guides + REPO: https://github.com/mokoconsulting-tech/mokosuite VERSION: 02.34.43 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents - NOTE: Completes the core guide set for WaaS plugin governance + NOTE: Completes the core guide set for Suite plugin governance --> -# MokoWaaS Rollback and Recovery Guide (VERSION: 02.34.43) +# MokoSuite Rollback and Recovery Guide (VERSION: 02.34.43) ## Introduction -The Rollback and Recovery Guide defines the procedures required to restore a stable operational state when the MokoWaaS plugin introduces issues or when an environment must revert to a previously validated condition. It ensures WaaS administrators, incident responders, and platform operators have a consistent and predictable process during incidents. +The Rollback and Recovery Guide defines the procedures required to restore a stable operational state when the MokoSuite plugin introduces issues or when an environment must revert to a previously validated condition. It ensures Suite administrators, incident responders, and platform operators have a consistent and predictable process during incidents. -Rollback and recovery are essential components of WaaS governance, reducing downtime and ensuring branding and UI consistency across environments. +Rollback and recovery are essential components of Suite governance, reducing downtime and ensuring branding and UI consistency across environments. ## When to Initiate Rollback @@ -40,7 +40,7 @@ These symptoms indicate that immediate containment and structured recovery are n To prevent further disruption: -1. Disable the MokoWaaS plugin via **System > Plugins**. +1. Disable the MokoSuite plugin via **System > Plugins**. 2. Clear Joomla cache. 3. Retest impacted areas to confirm whether disabling stabilizes behavior. 4. Review Joomla and PHP logs for indicators of root cause. @@ -72,7 +72,7 @@ Snapshots provide a guaranteed restoration point for complex failures. Once recovery steps are complete: -* Ensure branding matches WaaS identity guidelines. +* Ensure branding matches Suite identity guidelines. * Confirm no plugin initialization or load order errors. * Validate terminology strings across admin surfaces. * Verify stable rendering of the administrator dashboard. @@ -97,11 +97,11 @@ To reduce the likelihood of rollback events: * Test all plugin and template updates in staging before production rollout * Maintain version synchronization across branding related assets -* Acquire plugin builds only from approved WaaS release channels +* Acquire plugin builds only from approved Suite release channels * Enforce strict change control and governance for branding updates * Audit template overrides regularly to avoid conflicts -These strategies improve long term WaaS platform stability. +These strategies improve long term Suite platform stability. ## Revision History diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index 65c573b4..e2f1ab23 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -5,15 +5,15 @@ # FILE INFORMATION DEFGROUP: Joomla.Plugin - INGROUP: MokoWaaS.Guides - REPO: https://github.com/mokoconsulting-tech/mokowaas + INGROUP: MokoSuite.Guides + REPO: https://github.com/mokoconsulting-tech/mokosuite VERSION: 02.34.43 PATH: /docs/guides/testing-guide.md - BRIEF: Testing guide for MokoWaaS v02.01.08 + BRIEF: Testing guide for MokoSuite v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoWaaS Testing Guide (VERSION: 02.34.43) +# MokoSuite Testing Guide (VERSION: 02.34.43) ## 1. Prerequisites @@ -36,22 +36,22 @@ | # | Step | Expected Result | Pass | |---|------|-----------------|------| | 1 | Install plugin via Extensions > Install | "Installed frontend language overrides for en-GB" and "Installed administrator language overrides for en-GB" messages | [ ] | -| 2 | Navigate to Extensions > Plugins | Plugin appears as "System - MokoWaaS" (not raw key `PLG_SYSTEM_MOKOWAAS`) | [ ] | -| 3 | Open plugin config | Three fields visible: Brand Name (default "MokoWaaS"), Company Name (default "Moko Consulting"), Support URL (default "https://mokoconsulting.tech") | [ ] | -| 4 | Check admin dashboard | "Welcome to MokoWaaS!" appears in control panel | [ ] | -| 5 | Check admin footer | "Powered by MokoWaaS" appears | [ ] | -| 6 | Check admin login page | "MokoWaaS Administrator Login" title, support links show "Moko Consulting" | [ ] | -| 7 | Check frontend footer | "Powered by MokoWaaS" in MokoOnyx template | [ ] | -| 8 | Check Joomla override files at `administrator/language/overrides/en-GB.override.ini` | Contains `BEGIN MokoWaaS Overrides` sentinel block | [ ] | -| 9 | Check Joomla override files at `language/overrides/en-GB.override.ini` | Contains `BEGIN MokoWaaS Overrides` sentinel block | [ ] | +| 2 | Navigate to Extensions > Plugins | Plugin appears as "System - MokoSuite" (not raw key `PLG_SYSTEM_MOKOSUITE`) | [ ] | +| 3 | Open plugin config | Three fields visible: Brand Name (default "MokoSuite"), Company Name (default "Moko Consulting"), Support URL (default "https://mokoconsulting.tech") | [ ] | +| 4 | Check admin dashboard | "Welcome to MokoSuite!" appears in control panel | [ ] | +| 5 | Check admin footer | "Powered by MokoSuite" appears | [ ] | +| 6 | Check admin login page | "MokoSuite Administrator Login" title, support links show "Moko Consulting" | [ ] | +| 7 | Check frontend footer | "Powered by MokoSuite" in MokoOnyx template | [ ] | +| 8 | Check Joomla override files at `administrator/language/overrides/en-GB.override.ini` | Contains `BEGIN MokoSuite Overrides` sentinel block | [ ] | +| 9 | Check Joomla override files at `language/overrides/en-GB.override.ini` | Contains `BEGIN MokoSuite Overrides` sentinel block | [ ] | ### 2.2 Override Preservation (Install on Site with Existing Overrides) | # | Step | Expected Result | Pass | |---|------|-----------------|------| | 1 | Before install: add a custom override `MY_CUSTOM_KEY="My Value"` to `administrator/language/overrides/en-GB.override.ini` | Override file contains custom key | [ ] | -| 2 | Install MokoWaaS plugin | Success messages shown | [ ] | -| 3 | Open `administrator/language/overrides/en-GB.override.ini` | `MY_CUSTOM_KEY="My Value"` still present AND MokoWaaS sentinel block appended at end | [ ] | +| 2 | Install MokoSuite plugin | Success messages shown | [ ] | +| 3 | Open `administrator/language/overrides/en-GB.override.ini` | `MY_CUSTOM_KEY="My Value"` still present AND MokoSuite sentinel block appended at end | [ ] | | 4 | In Joomla admin: System > Language Overrides | Custom override still visible and functional | [ ] | ### 2.3 Brand Name Configuration @@ -60,7 +60,7 @@ |---|------|-----------------|------| | 1 | Open plugin config, change Brand Name to "TestBrand" | Field accepts the value | [ ] | | 2 | Save and close plugin config | Save succeeds | [ ] | -| 3 | Reload admin dashboard | "Welcome to TestBrand!" appears (not "MokoWaaS") | [ ] | +| 3 | Reload admin dashboard | "Welcome to TestBrand!" appears (not "MokoSuite") | [ ] | | 4 | Check admin footer | "Powered by TestBrand" | [ ] | | 5 | Check frontend page | "Powered by TestBrand" in footer | [ ] | | 6 | Check Quick Icons area | "TestBrand is up to date." | [ ] | @@ -94,18 +94,18 @@ | # | Step | Expected Result | Pass | |---|------|-----------------|------| -| 1 | Install v01.x of MokoWaaS first | Old version installed | [ ] | +| 1 | Install v01.x of MokoSuite first | Old version installed | [ ] | | 2 | Install v02.01.08 over it | Upgrade succeeds with "Installed" messages | [ ] | -| 3 | Check override files | MokoWaaS sentinel block present, no duplicate keys | [ ] | -| 4 | Verify old inline overrides (from v01.x) are cleaned up | No stray MokoWaaS keys outside the sentinel block | [ ] | +| 3 | Check override files | MokoSuite sentinel block present, no duplicate keys | [ ] | +| 4 | Verify old inline overrides (from v01.x) are cleaned up | No stray MokoSuite keys outside the sentinel block | [ ] | ### 2.8 Uninstall | # | Step | Expected Result | Pass | |---|------|-----------------|------| -| 1 | Uninstall MokoWaaS via Extensions > Manage | "Removed frontend language overrides" and "Removed administrator language overrides" messages | [ ] | -| 2 | Check `administrator/language/overrides/en-GB.override.ini` | MokoWaaS sentinel block removed; any custom overrides (e.g., `MY_CUSTOM_KEY`) still present | [ ] | -| 3 | Check `language/overrides/en-GB.override.ini` | MokoWaaS block removed; file deleted if no other overrides remain | [ ] | +| 1 | Uninstall MokoSuite via Extensions > Manage | "Removed frontend language overrides" and "Removed administrator language overrides" messages | [ ] | +| 2 | Check `administrator/language/overrides/en-GB.override.ini` | MokoSuite sentinel block removed; any custom overrides (e.g., `MY_CUSTOM_KEY`) still present | [ ] | +| 3 | Check `language/overrides/en-GB.override.ini` | MokoSuite block removed; file deleted if no other overrides remain | [ ] | | 4 | Reload admin dashboard | Default Joomla strings restored | [ ] | ### 2.9 Admin Override Key Coverage @@ -143,7 +143,7 @@ Verify the following admin areas no longer show "Joomla": | 3 | 404 error page | "Page Not Found" (no Joomla reference) | [ ] | | 4 | Frontend login support | "{company} Support" / "{brand} Documentation" | [ ] | -### 2.11 WaaS Master User Enforcement +### 2.11 Suite Master User Enforcement | # | Step | Expected Result | Pass | |---|------|-----------------|------| @@ -153,37 +153,37 @@ Verify the following admin areas no longer show "Joomla": | 4 | Remove from Super Users group, reload admin | Re-added to group | [ ] | | 5 | Change master_username to "customadmin" in config | Enforces new username | [ ] | | 6 | Set enforce_master_user to No, delete user | User NOT recreated | [ ] | -| 7 | Check mokowaas log | Enforcement events logged | [ ] | +| 7 | Check mokosuite log | Enforcement events logged | [ ] | ### 2.12 Emergency Access Two-Factor Flow | # | Step | Expected Result | Pass | |---|------|-----------------|------| -| 1 | Login as mokoconsulting with DB password | mokowaas-verify.php created in site root | [ ] | -| 2 | Check error message | "delete /mokowaas-verify.php..." displayed | [ ] | -| 3 | Delete mokowaas-verify.php via FTP/SSH | File removed from server | [ ] | +| 1 | Login as mokoconsulting with DB password | mokosuite-verify.php created in site root | [ ] | +| 2 | Check error message | "delete /mokosuite-verify.php..." displayed | [ ] | +| 3 | Delete mokosuite-verify.php via FTP/SSH | File removed from server | [ ] | | 4 | Login again with same credentials | Access granted, logged in as master user | [ ] | -| 5 | Check mokowaas-verify.flag | Cleaned up after successful login | [ ] | +| 5 | Check mokosuite-verify.flag | Cleaned up after successful login | [ ] | | 6 | Check System > Action Logs | "Emergency access LOGIN" entry with IP | [ ] | | 7 | Check master email inbox | Notification email received with site, user, IP, time | [ ] | -| 8 | Set `$mokowaas_allowed_ips = '1.2.3.4';` (not your IP) | Emergency login blocked | [ ] | +| 8 | Set `$mokosuite_allowed_ips = '1.2.3.4';` (not your IP) | Emergency login blocked | [ ] | | 9 | Check Action Logs | "Emergency access BLOCKED (unauthorized IP)" entry | [ ] | | 10 | Add your IP to allowed list | Emergency login works | [ ] | -| 11 | Remove `$mokowaas_allowed_ips` entirely | Emergency access BLOCKED (empty = denied) | [ ] | +| 11 | Remove `$mokosuite_allowed_ips` entirely | Emergency access BLOCKED (empty = denied) | [ ] | | 12 | Use wrong DB password | Normal auth failure | [ ] | | 13 | Check Action Logs | "Emergency access FAILED (wrong password)" entry | [ ] | | 14 | Set emergency_access to No in plugin config | DB password login disabled | [ ] | -| 15 | Plugin config > WaaS Access tab | IP whitelist panel shows current IPs, your IP, status | [ ] | +| 15 | Plugin config > Suite Access tab | IP whitelist panel shows current IPs, your IP, status | [ ] | ### 2.13 Override Install Respects User Overrides | # | Step | Expected Result | Pass | |---|------|-----------------|------| | 1 | Before install: set `TPL_ATUM_POWERED_BY="Powered by ClientCo"` | User override in file | [ ] | -| 2 | Install MokoWaaS plugin | Success messages shown | [ ] | +| 2 | Install MokoSuite plugin | Success messages shown | [ ] | | 3 | Check override file | `TPL_ATUM_POWERED_BY` still says "Powered by ClientCo" | [ ] | -| 4 | Check MokoWaaS sentinel block | `TPL_ATUM_POWERED_BY` NOT in the block (skipped) | [ ] | -| 5 | Check all other MokoWaaS keys | Present in the block | [ ] | +| 4 | Check MokoSuite sentinel block | `TPL_ATUM_POWERED_BY` NOT in the block (skipped) | [ ] | +| 5 | Check all other MokoSuite keys | Present in the block | [ ] | | 6 | Reinstall/update plugin | User key still preserved | [ ] | | 7 | Uninstall plugin | Only block keys removed, user key stays | [ ] | @@ -197,7 +197,7 @@ Verify the following admin areas no longer show "Joomla": | 2 | Plugin config > Maintenance > Reset All Hits = Yes, save | "Reset hit counters on X articles." | [ ] | | 3 | Check #__content.hits | All values are 0 | [ ] | | 4 | Check Reset All Hits toggle | Auto-reset to No | [ ] | -| 5 | Check mokowaas log | "All article hits reset" logged | [ ] | +| 5 | Check mokosuite log | "All article hits reset" logged | [ ] | #### 2.14b Delete All Versions @@ -208,7 +208,7 @@ Verify the following admin areas no longer show "Joomla": | 3 | Check #__history table | Empty | [ ] | | 4 | Open article > Versions button | No versions shown | [ ] | | 5 | Check toggle | Auto-reset to No | [ ] | -| 6 | Check mokowaas log | "All content versions purged" logged | [ ] | +| 6 | Check mokosuite log | "All content versions purged" logged | [ ] | | 7 | Both toggles Yes at same time, save | Both actions execute | [ ] | ### 2.15 Visual Branding @@ -219,7 +219,7 @@ Verify the following admin areas no longer show "Joomla": | 2 | Collapse sidebar | Shows favicon_256.png | [ ] | | 3 | Log out | Login page shows logo.png | [ ] | | 4 | Check browser tab | favicon.svg displayed (modern) or favicon.ico (legacy) | [ ] | -| 5 | Check /media/plg_system_mokowaas/ | All 4 image files present | [ ] | +| 5 | Check /media/plg_system_mokosuite/ | All 4 image files present | [ ] | | 6 | Manually change Atum logo in template styles | Reload admin → enforced back to plugin logo | [ ] | | 7 | Check Atum style params in DB | logoBrandLarge, logoBrandSmall, loginLogo set, alt text empty | [ ] | | 8 | Set Primary Color | Admin accent color changes | [ ] | @@ -265,7 +265,7 @@ Verify the following admin areas no longer show "Joomla": | # | Scenario | Expected Behavior | |---|----------|-------------------| -| 1 | Brand Name field left empty | Falls back to default "MokoWaaS" | +| 1 | Brand Name field left empty | Falls back to default "MokoSuite" | | 2 | Brand Name with special characters (` diff --git a/source/packages/com_mokowaas/admin/tmpl/privacy/default.php b/source/packages/com_mokosuite/admin/tmpl/privacy/default.php similarity index 96% rename from source/packages/com_mokowaas/admin/tmpl/privacy/default.php rename to source/packages/com_mokosuite/admin/tmpl/privacy/default.php index 9fd993e6..b40ec1c8 100644 --- a/source/packages/com_mokowaas/admin/tmpl/privacy/default.php +++ b/source/packages/com_mokosuite/admin/tmpl/privacy/default.php @@ -24,7 +24,7 @@ $typeBadge = [ ]; ?> -
+
@@ -100,7 +100,7 @@ $typeBadge = [
@@ -117,7 +117,7 @@ $typeBadge = [
Data Subject Requests
- +
@@ -139,7 +139,7 @@ $priorityBadge = [ 'Reopen', 'in_progress' => 'In Progress', 'waiting' => 'Waiting', 'resolved' => 'Resolve', 'closed' => 'Close'] as $s => $label): ?> status): ?> diff --git a/source/packages/com_mokowaas/admin/tmpl/tickets/default.php b/source/packages/com_mokosuite/admin/tmpl/tickets/default.php similarity index 94% rename from source/packages/com_mokowaas/admin/tmpl/tickets/default.php rename to source/packages/com_mokosuite/admin/tmpl/tickets/default.php index 33c7f502..c99d5175 100644 --- a/source/packages/com_mokowaas/admin/tmpl/tickets/default.php +++ b/source/packages/com_mokosuite/admin/tmpl/tickets/default.php @@ -30,7 +30,7 @@ $priorityBadge = [ ]; ?> -
+
open; ?>Open
@@ -51,7 +51,7 @@ $priorityBadge = [
- + @@ -204,7 +204,7 @@ var modalSubject = document.getElementById('modal-subject'); function modalDoSearch() { var q = modalSearch.value.trim(); if (q.length < 3) return; - fetch('&q=' + encodeURIComponent(q), { + fetch('&q=' + encodeURIComponent(q), { headers: {'X-Requested-With': 'XMLHttpRequest'} }).then(function(r){return r.json()}).then(function(d) { modalResults.textContent = ''; @@ -254,7 +254,7 @@ if (modalForm) { fetch(form.action, {method:'POST', body:fd, headers:{'X-Requested-With':'XMLHttpRequest'}}) .then(function(r){return r.json()}) .then(function(d){ - if (d.success) { location.href = 'index.php?option=com_mokowaas&view=ticket&id=' + d.id; } + if (d.success) { location.href = 'index.php?option=com_mokosuite&view=ticket&id=' + d.id; } else { Joomla.renderMessages({error:[d.message]}); } }); }); diff --git a/source/packages/com_mokowaas/admin/tmpl/waflog/default.php b/source/packages/com_mokosuite/admin/tmpl/waflog/default.php similarity index 92% rename from source/packages/com_mokowaas/admin/tmpl/waflog/default.php rename to source/packages/com_mokosuite/admin/tmpl/waflog/default.php index 4fab7ab2..d9f5d12f 100644 --- a/source/packages/com_mokowaas/admin/tmpl/waflog/default.php +++ b/source/packages/com_mokosuite/admin/tmpl/waflog/default.php @@ -25,7 +25,7 @@ $ruleBadge = [ ]; ?> -
+
@@ -46,7 +46,7 @@ $ruleBadge = [
- +
@@ -71,7 +71,7 @@ $ruleBadge = [
- Reset + Reset
@@ -82,7 +82,7 @@ $ruleBadge = [
blocked requests @@ -106,7 +106,7 @@ $ruleBadge = [ user_agent, 0, 40)); ?> @@ -124,10 +124,10 @@ $ruleBadge = [ @@ -151,7 +151,7 @@ $ruleBadge = [ last_seen, 'M d'); ?> diff --git a/source/packages/com_mokowaas/api/src/Controller/CacheController.php b/source/packages/com_mokosuite/api/src/Controller/CacheController.php similarity index 92% rename from source/packages/com_mokowaas/api/src/Controller/CacheController.php rename to source/packages/com_mokosuite/api/src/Controller/CacheController.php index f5e25409..1d12d033 100644 --- a/source/packages/com_mokowaas/api/src/Controller/CacheController.php +++ b/source/packages/com_mokosuite/api/src/Controller/CacheController.php @@ -1,12 +1,12 @@ getQuery(true) ->select($db->quoteName('manifest_cache')) ->from($db->quoteName('#__extensions')) - ->where($db->quoteName('element') . ' = ' . $db->quote('pkg_mokowaas')) + ->where($db->quoteName('element') . ' = ' . $db->quote('pkg_mokosuite')) ->where($db->quoteName('type') . ' = ' . $db->quote('package')); $db->setQuery($query); $pkgCache = json_decode($db->loadResult() ?? '{}'); @@ -71,8 +71,8 @@ class DashboardController extends BaseController ->from($db->quoteName('#__extensions')) ->where($db->quoteName('type') . ' = ' . $db->quote('plugin')) ->where($db->quoteName('folder') . ' = ' . $db->quote('system')) - ->where('(' . $db->quoteName('element') . ' = ' . $db->quote('mokowaas') - . ' OR ' . $db->quoteName('element') . ' LIKE ' . $db->quote('mokowaas\\_%') . ')') + ->where('(' . $db->quoteName('element') . ' = ' . $db->quote('mokosuite') + . ' OR ' . $db->quoteName('element') . ' LIKE ' . $db->quote('mokosuite\\_%') . ')') ->order($db->quoteName('element') . ' ASC'); $db->setQuery($query); $pluginRows = $db->loadObjectList() ?: []; @@ -118,7 +118,7 @@ class DashboardController extends BaseController 'site' => [ 'name' => $config->get('sitename', ''), 'url' => rtrim(Uri::root(), '/'), - 'mokowaas_version' => $pkgCache->version ?? '', + 'mokosuite_version' => $pkgCache->version ?? '', 'joomla_version' => (new Version())->getShortVersion(), 'php_version' => PHP_VERSION, 'db_type' => $db->getServerType(), diff --git a/source/packages/com_mokowaas/api/src/Controller/ExtensionsController.php b/source/packages/com_mokosuite/api/src/Controller/ExtensionsController.php similarity index 96% rename from source/packages/com_mokowaas/api/src/Controller/ExtensionsController.php rename to source/packages/com_mokosuite/api/src/Controller/ExtensionsController.php index 81f8f529..fa91f27a 100644 --- a/source/packages/com_mokowaas/api/src/Controller/ExtensionsController.php +++ b/source/packages/com_mokosuite/api/src/Controller/ExtensionsController.php @@ -1,12 +1,12 @@ sendJson(503, ['error' => 'MokoWaaS system plugin not enabled']); + $this->sendJson(503, ['error' => 'MokoSuite system plugin not enabled']); return; } @@ -74,7 +74,7 @@ class HealthController extends BaseController 'caching' => (bool) $config->get('caching', 0), ], 'plugin' => [ - 'brand' => $params->get('brand_name', 'MokoWaaS'), + 'brand' => $params->get('brand_name', 'MokoSuite'), 'company' => $params->get('company_name', 'Moko Consulting'), ], ]; diff --git a/source/packages/com_mokowaas/api/src/Controller/InstallController.php b/source/packages/com_mokosuite/api/src/Controller/InstallController.php similarity index 94% rename from source/packages/com_mokowaas/api/src/Controller/InstallController.php rename to source/packages/com_mokosuite/api/src/Controller/InstallController.php index e408fe46..d794e126 100644 --- a/source/packages/com_mokowaas/api/src/Controller/InstallController.php +++ b/source/packages/com_mokosuite/api/src/Controller/InstallController.php @@ -1,12 +1,12 @@ get('tmp_path', JPATH_ROOT . '/tmp'); - $zipFile = $tmpPath . '/mokowaas_install_' . bin2hex(random_bytes(8)) . '.zip'; + $zipFile = $tmpPath . '/mokosuite_install_' . bin2hex(random_bytes(8)) . '.zip'; // Download $this->downloadFile($url, $zipFile); @@ -123,7 +123,7 @@ class InstallController extends BaseController try { // Extract - $extractDir = $tmpPath . '/mokowaas_extract_' . bin2hex(random_bytes(8)); + $extractDir = $tmpPath . '/mokosuite_extract_' . bin2hex(random_bytes(8)); if (!mkdir($extractDir, 0755, true)) { @@ -207,7 +207,7 @@ class InstallController extends BaseController CURLOPT_TIMEOUT => 120, CURLOPT_CONNECTTIMEOUT => 15, CURLOPT_FAILONERROR => true, - CURLOPT_USERAGENT => 'MokoWaaS-Installer/1.0', + CURLOPT_USERAGENT => 'MokoSuite-Installer/1.0', ]); $success = curl_exec($ch); diff --git a/source/packages/com_mokowaas/api/src/Controller/PluginsController.php b/source/packages/com_mokosuite/api/src/Controller/PluginsController.php similarity index 89% rename from source/packages/com_mokowaas/api/src/Controller/PluginsController.php rename to source/packages/com_mokosuite/api/src/Controller/PluginsController.php index cfc9788a..853281f5 100644 --- a/source/packages/com_mokowaas/api/src/Controller/PluginsController.php +++ b/source/packages/com_mokosuite/api/src/Controller/PluginsController.php @@ -1,12 +1,12 @@ quoteName('type') . ' = ' . $db->quote('plugin') . ' AND ' . $db->quoteName('folder') . ' = ' . $db->quote('system') - . ' AND (' . $db->quoteName('element') . ' = ' . $db->quote('mokowaas') - . ' OR ' . $db->quoteName('element') . ' LIKE ' . $db->quote('mokowaas\\_%') . '))' + . ' AND (' . $db->quoteName('element') . ' = ' . $db->quote('mokosuite') + . ' OR ' . $db->quoteName('element') . ' LIKE ' . $db->quote('mokosuite\\_%') . '))' . ' OR (' . $db->quoteName('type') . ' = ' . $db->quote('plugin') . ' AND ' . $db->quoteName('folder') . ' = ' . $db->quote('webservices') - . ' AND ' . $db->quoteName('element') . ' = ' . $db->quote('mokowaas') . ')' + . ' AND ' . $db->quoteName('element') . ' = ' . $db->quote('mokosuite') . ')' . ' OR (' . $db->quoteName('type') . ' = ' . $db->quote('plugin') . ' AND ' . $db->quoteName('folder') . ' = ' . $db->quote('task') - . ' AND ' . $db->quoteName('element') . ' LIKE ' . $db->quote('mokowaas%') . ')' + . ' AND ' . $db->quoteName('element') . ' LIKE ' . $db->quote('mokosuite%') . ')' . ')', ]) ->order($db->quoteName('folder') . ' ASC, ' . $db->quoteName('element') . ' ASC'); @@ -98,7 +98,7 @@ class PluginsController extends BaseController } /** - * Toggle a MokoWaaS feature plugin on or off. + * Toggle a MokoSuite feature plugin on or off. * * Expects JSON body: {"extension_id": 123, "enabled": true} * @@ -130,7 +130,7 @@ class PluginsController extends BaseController $db = Factory::getDbo(); - // Verify the extension exists and is a MokoWaaS plugin + // Verify the extension exists and is a MokoSuite plugin $query = $db->getQuery(true) ->select([$db->quoteName('element'), $db->quoteName('protected')]) ->from($db->quoteName('#__extensions')) @@ -147,7 +147,7 @@ class PluginsController extends BaseController } // Don't allow disabling protected/core plugins - if (!$enabled && ((int) $ext->protected || $ext->element === 'mokowaas')) + if (!$enabled && ((int) $ext->protected || $ext->element === 'mokosuite')) { $this->sendJson(409, ['error' => 'This plugin is protected and cannot be disabled']); diff --git a/source/packages/com_mokowaas/api/src/Controller/ProvisionController.php b/source/packages/com_mokosuite/api/src/Controller/ProvisionController.php similarity index 94% rename from source/packages/com_mokowaas/api/src/Controller/ProvisionController.php rename to source/packages/com_mokosuite/api/src/Controller/ProvisionController.php index 8f66a1c5..99da985c 100644 --- a/source/packages/com_mokowaas/api/src/Controller/ProvisionController.php +++ b/source/packages/com_mokosuite/api/src/Controller/ProvisionController.php @@ -1,12 +1,12 @@ getIdentity(); - if (!$user->authorise('core.manage', 'com_mokowaas')) + if (!$user->authorise('core.manage', 'com_mokosuite')) { $this->sendJson(403, ['error' => 'Not authorized']); @@ -91,7 +91,7 @@ class ProvisionController extends BaseController { $newToken = bin2hex(random_bytes(32)); - $plugin = \Joomla\CMS\Plugin\PluginHelper::getPlugin('system', 'mokowaas'); + $plugin = \Joomla\CMS\Plugin\PluginHelper::getPlugin('system', 'mokosuite'); if ($plugin) { @@ -102,7 +102,7 @@ class ProvisionController extends BaseController $db->getQuery(true) ->update($db->quoteName('#__extensions')) ->set($db->quoteName('params') . ' = ' . $db->quote($pluginParams->toString())) - ->where($db->quoteName('element') . ' = ' . $db->quote('mokowaas')) + ->where($db->quoteName('element') . ' = ' . $db->quote('mokosuite')) ->where($db->quoteName('type') . ' = ' . $db->quote('plugin')) ->where($db->quoteName('folder') . ' = ' . $db->quote('system')) )->execute(); @@ -156,7 +156,7 @@ class ProvisionController extends BaseController try { // Write a flag file that the core plugin checks on next admin load - $flagFile = JPATH_ADMINISTRATOR . '/cache/mokowaas_setup_required.flag'; + $flagFile = JPATH_ADMINISTRATOR . '/cache/mokosuite_setup_required.flag'; file_put_contents($flagFile, json_encode([ 'created' => gmdate('Y-m-d\TH:i:s\Z'), 'reason' => 'provision-reset', diff --git a/source/packages/com_mokowaas/api/src/Controller/RemoteLoginController.php b/source/packages/com_mokosuite/api/src/Controller/RemoteLoginController.php similarity index 82% rename from source/packages/com_mokowaas/api/src/Controller/RemoteLoginController.php rename to source/packages/com_mokosuite/api/src/Controller/RemoteLoginController.php index ff93da3a..e68799f1 100644 --- a/source/packages/com_mokowaas/api/src/Controller/RemoteLoginController.php +++ b/source/packages/com_mokosuite/api/src/Controller/RemoteLoginController.php @@ -1,12 +1,12 @@ sendJson(503, ['error' => 'MokoWaaS core plugin not found']); + $this->sendJson(503, ['error' => 'MokoSuite core plugin not found']); return; } @@ -110,7 +110,7 @@ class RemoteLoginController extends BaseController $expires = time() + self::OTL_TTL; // Store in a temp file (avoids DB schema changes) - $otlFile = JPATH_ADMINISTRATOR . '/cache/mokowaas_otl_' . md5($otlToken) . '.json'; + $otlFile = JPATH_ADMINISTRATOR . '/cache/mokosuite_otl_' . md5($otlToken) . '.json'; file_put_contents($otlFile, json_encode([ 'token' => $otlToken, 'user_id' => (int) $user->id, @@ -120,7 +120,7 @@ class RemoteLoginController extends BaseController ])); // Build login URL - $loginUrl = rtrim(Uri::root(), '/') . '/administrator/index.php?mokowaas_otl=' . $otlToken; + $loginUrl = rtrim(Uri::root(), '/') . '/administrator/index.php?mokosuite_otl=' . $otlToken; $this->sendJson(200, [ 'status' => 'ok', @@ -139,16 +139,16 @@ class RemoteLoginController extends BaseController */ private function getMasterUsernames(Registry $params): array { - // Use MokoWaaSHelper if available - $helperFile = JPATH_PLUGINS . '/system/mokowaas/Helper/MokoWaaSHelper.php'; + // Use MokoSuiteHelper if available + $helperFile = JPATH_PLUGINS . '/system/mokosuite/Helper/MokoSuiteHelper.php'; if (file_exists($helperFile)) { require_once $helperFile; - if (method_exists(\Moko\Plugin\System\MokoWaaS\Helper\MokoWaaSHelper::class, 'getMasterUsernames')) + if (method_exists(\Moko\Plugin\System\MokoSuite\Helper\MokoSuiteHelper::class, 'getMasterUsernames')) { - return \Moko\Plugin\System\MokoWaaS\Helper\MokoWaaSHelper::getMasterUsernames(); + return \Moko\Plugin\System\MokoSuite\Helper\MokoSuiteHelper::getMasterUsernames(); } } diff --git a/source/packages/com_mokowaas/api/src/Controller/ResetController.php b/source/packages/com_mokosuite/api/src/Controller/ResetController.php similarity index 81% rename from source/packages/com_mokowaas/api/src/Controller/ResetController.php rename to source/packages/com_mokosuite/api/src/Controller/ResetController.php index 4551aa76..d3cde5fe 100644 --- a/source/packages/com_mokowaas/api/src/Controller/ResetController.php +++ b/source/packages/com_mokosuite/api/src/Controller/ResetController.php @@ -1,12 +1,12 @@ sendJson(503, ['error' => 'MokoWaaS system plugin not enabled']); + $this->sendJson(503, ['error' => 'MokoSuite system plugin not enabled']); return; } @@ -84,13 +84,13 @@ class ResetController extends BaseController * * @param Registry $params Plugin parameters * - * @return \Moko\Plugin\System\MokoWaaS\Service\DemoResetService + * @return \Moko\Plugin\System\MokoSuite\Service\DemoResetService * * @since 02.21.00 */ private function createService(Registry $params) { - $serviceFile = JPATH_PLUGINS . '/task/mokowaasdemo/src/Service/DemoResetService.php'; + $serviceFile = JPATH_PLUGINS . '/task/mokosuitedemo/src/Service/DemoResetService.php'; if (!file_exists($serviceFile)) { @@ -101,7 +101,7 @@ class ResetController extends BaseController $media = (bool) $params->get('demo_snapshot_include_media', 1); - return new \Moko\Plugin\Task\MokoWaaSDemo\Service\DemoResetService($media); + return new \Moko\Plugin\Task\MokoSuiteDemo\Service\DemoResetService($media); } /** diff --git a/source/packages/com_mokowaas/api/src/Controller/SnapshotController.php b/source/packages/com_mokosuite/api/src/Controller/SnapshotController.php similarity index 83% rename from source/packages/com_mokowaas/api/src/Controller/SnapshotController.php rename to source/packages/com_mokosuite/api/src/Controller/SnapshotController.php index 3729b95c..57298fd8 100644 --- a/source/packages/com_mokowaas/api/src/Controller/SnapshotController.php +++ b/source/packages/com_mokosuite/api/src/Controller/SnapshotController.php @@ -1,12 +1,12 @@ params) : new Registry; $body = json_decode($app->input->json->getRaw(), true); @@ -112,13 +112,13 @@ class SnapshotController extends BaseController /** * Create DemoResetService from plugin params. * - * @return \Moko\Plugin\System\MokoWaaS\Service\DemoResetService + * @return \Moko\Plugin\System\MokoSuite\Service\DemoResetService * * @since 02.21.00 */ private function createService() { - $serviceFile = JPATH_PLUGINS . '/task/mokowaasdemo/src/Service/DemoResetService.php'; + $serviceFile = JPATH_PLUGINS . '/task/mokosuitedemo/src/Service/DemoResetService.php'; if (!file_exists($serviceFile)) { @@ -127,12 +127,12 @@ class SnapshotController extends BaseController require_once $serviceFile; - $plugin = PluginHelper::getPlugin('system', 'mokowaas'); + $plugin = PluginHelper::getPlugin('system', 'mokosuite'); $params = $plugin ? new Registry($plugin->params) : new Registry; $media = (bool) $params->get('demo_snapshot_include_media', 1); - return new \Moko\Plugin\Task\MokoWaaSDemo\Service\DemoResetService($media); + return new \Moko\Plugin\Task\MokoSuiteDemo\Service\DemoResetService($media); } /** diff --git a/source/packages/com_mokowaas/api/src/Controller/SyncController.php b/source/packages/com_mokosuite/api/src/Controller/SyncController.php similarity index 78% rename from source/packages/com_mokowaas/api/src/Controller/SyncController.php rename to source/packages/com_mokosuite/api/src/Controller/SyncController.php index 93809f52..a6471529 100644 --- a/source/packages/com_mokowaas/api/src/Controller/SyncController.php +++ b/source/packages/com_mokosuite/api/src/Controller/SyncController.php @@ -1,12 +1,12 @@ sendJson(503, ['error' => 'MokoWaaS system plugin not enabled']); + $this->sendJson(503, ['error' => 'MokoSuite system plugin not enabled']); return; } @@ -57,10 +57,10 @@ class SyncController extends BaseController $params = new Registry($plugin->params); $targets = json_decode($params->get('sync_targets', '[]'), true) ?: []; - $serviceFile = JPATH_PLUGINS . '/task/mokowaassync/src/Service/ContentSyncService.php'; + $serviceFile = JPATH_PLUGINS . '/task/mokosuitesync/src/Service/ContentSyncService.php'; require_once $serviceFile; - $service = new \Moko\Plugin\Task\MokoWaaSSync\Service\ContentSyncService(); + $service = new \Moko\Plugin\Task\MokoSuiteSync\Service\ContentSyncService(); $result = $service->syncAllTargets($targets); $this->sendJson(200, $result); diff --git a/source/packages/com_mokowaas/api/src/Controller/SyncReceiveController.php b/source/packages/com_mokosuite/api/src/Controller/SyncReceiveController.php similarity index 79% rename from source/packages/com_mokowaas/api/src/Controller/SyncReceiveController.php rename to source/packages/com_mokosuite/api/src/Controller/SyncReceiveController.php index d888f7fb..a708f734 100644 --- a/source/packages/com_mokowaas/api/src/Controller/SyncReceiveController.php +++ b/source/packages/com_mokosuite/api/src/Controller/SyncReceiveController.php @@ -1,12 +1,12 @@ input->json->getRaw(), true); - if (empty($payload['mokowaas_sync'])) + if (empty($payload['mokosuite_sync'])) { - $this->sendJson(400, ['error' => 'Invalid payload — missing mokowaas_sync version']); + $this->sendJson(400, ['error' => 'Invalid payload — missing mokosuite_sync version']); return; } - $serviceFile = JPATH_PLUGINS . '/task/mokowaassync/src/Service/ContentSyncReceiver.php'; + $serviceFile = JPATH_PLUGINS . '/task/mokosuitesync/src/Service/ContentSyncReceiver.php'; require_once $serviceFile; - $receiver = new \Moko\Plugin\Task\MokoWaaSSync\Service\ContentSyncReceiver(); + $receiver = new \Moko\Plugin\Task\MokoSuiteSync\Service\ContentSyncReceiver(); $result = $receiver->receive($payload); $this->sendJson(200, $result); diff --git a/source/packages/com_mokowaas/api/src/Controller/UpdateController.php b/source/packages/com_mokosuite/api/src/Controller/UpdateController.php similarity index 93% rename from source/packages/com_mokowaas/api/src/Controller/UpdateController.php rename to source/packages/com_mokosuite/api/src/Controller/UpdateController.php index bb48efba..cae5c7aa 100644 --- a/source/packages/com_mokowaas/api/src/Controller/UpdateController.php +++ b/source/packages/com_mokosuite/api/src/Controller/UpdateController.php @@ -1,12 +1,12 @@ - MokoWaaS + MokoSuite Moko Consulting 2026-06-02 Copyright (C) 2026 Moko Consulting. All rights reserved. @@ -21,9 +21,9 @@ hello@mokoconsulting.tech https://mokoconsulting.tech 02.34.43-dev - MokoWaaS admin dashboard and REST API. Provides a control panel for managing MokoWaaS feature plugins, site health monitoring, and remote management endpoints. + MokoSuite admin dashboard and REST API. Provides a control panel for managing MokoSuite feature plugins, site health monitoring, and remote management endpoints. - Moko\Component\MokoWaaS + Moko\Component\MokoSuite sql/install.mysql.sql @@ -38,20 +38,20 @@ - MokoWaaS + MokoSuite - COM_MOKOWAAS_MENU_DASHBOARD - COM_MOKOWAAS_MENU_EXTENSIONS - COM_MOKOWAAS_MENU_TICKETS - COM_MOKOWAAS_MENU_HTACCESS - COM_MOKOWAAS_MENU_PRIVACY - COM_MOKOWAAS_MENU_WAFLOG - COM_MOKOWAAS_MENU_DATABASE - COM_MOKOWAAS_MENU_CLEANUP - COM_MOKOWAAS_MENU_PLUGINS - COM_MOKOWAAS_MENU_UPDATES - COM_MOKOWAAS_MENU_CHECKIN - COM_MOKOWAAS_MENU_CACHE + COM_MOKOSUITE_MENU_DASHBOARD + COM_MOKOSUITE_MENU_EXTENSIONS + COM_MOKOSUITE_MENU_TICKETS + COM_MOKOSUITE_MENU_HTACCESS + COM_MOKOSUITE_MENU_PRIVACY + COM_MOKOSUITE_MENU_WAFLOG + COM_MOKOSUITE_MENU_DATABASE + COM_MOKOSUITE_MENU_CLEANUP + COM_MOKOSUITE_MENU_PLUGINS + COM_MOKOSUITE_MENU_UPDATES + COM_MOKOSUITE_MENU_CHECKIN + COM_MOKOSUITE_MENU_CACHE access.xml @@ -64,7 +64,7 @@ tmpl - en-GB/com_mokowaas.sys.ini + en-GB/com_mokosuite.sys.ini @@ -85,7 +85,7 @@ - + css js diff --git a/source/packages/com_mokosuite/site/language/en-GB/com_mokosuite.ini b/source/packages/com_mokosuite/site/language/en-GB/com_mokosuite.ini new file mode 100644 index 00000000..b6ea3563 --- /dev/null +++ b/source/packages/com_mokosuite/site/language/en-GB/com_mokosuite.ini @@ -0,0 +1,11 @@ +; MokoSuite Customer Portal - Language Strings +; Copyright (C) 2026 Moko Consulting. All rights reserved. +; License: GPL-3.0-or-later + +COM_MOKOSUITE_PORTAL_TITLE="Support Portal" +COM_MOKOSUITE_PORTAL_MY_TICKETS="My Support Tickets" +COM_MOKOSUITE_PORTAL_NEW_TICKET="New Ticket" +COM_MOKOSUITE_PORTAL_SUBMIT="Submit Ticket" +COM_MOKOSUITE_PORTAL_REPLY="Send Reply" +COM_MOKOSUITE_PORTAL_NO_TICKETS="You haven't submitted any support tickets yet." +COM_MOKOSUITE_PORTAL_LOGIN_REQUIRED="Please log in to access the support portal." diff --git a/source/packages/com_mokowaas/site/services/provider.php b/source/packages/com_mokosuite/site/services/provider.php similarity index 90% rename from source/packages/com_mokowaas/site/services/provider.php rename to source/packages/com_mokosuite/site/services/provider.php index cb74ca34..7dfeced9 100644 --- a/source/packages/com_mokowaas/site/services/provider.php +++ b/source/packages/com_mokosuite/site/services/provider.php @@ -1,7 +1,7 @@ registerServiceProvider(new MVCFactory('\\Moko\\Component\\MokoWaaS')); - $container->registerServiceProvider(new ComponentDispatcherFactory('\\Moko\\Component\\MokoWaaS')); + $container->registerServiceProvider(new MVCFactory('\\Moko\\Component\\MokoSuite')); + $container->registerServiceProvider(new ComponentDispatcherFactory('\\Moko\\Component\\MokoSuite')); $container->set( ComponentInterface::class, diff --git a/source/packages/com_mokowaas/site/src/Controller/DisplayController.php b/source/packages/com_mokosuite/site/src/Controller/DisplayController.php similarity index 92% rename from source/packages/com_mokowaas/site/src/Controller/DisplayController.php rename to source/packages/com_mokosuite/site/src/Controller/DisplayController.php index 1018e9eb..e1fbe92e 100644 --- a/source/packages/com_mokowaas/site/src/Controller/DisplayController.php +++ b/source/packages/com_mokosuite/site/src/Controller/DisplayController.php @@ -1,12 +1,12 @@ enqueueMessage('Please log in to access the support portal.', 'warning'); Factory::getApplication()->redirect(Route::_( - 'index.php?option=com_users&view=login&return=' . base64_encode('index.php?option=com_mokowaas&view=tickets'), + 'index.php?option=com_users&view=login&return=' . base64_encode('index.php?option=com_mokosuite&view=tickets'), false )); @@ -140,7 +140,7 @@ class DisplayController extends BaseController $user = Factory::getApplication()->getIdentity(); - if (!$user->authorise('mokowaas.tickets.assign', 'com_mokowaas')) + if (!$user->authorise('mokosuite.tickets.assign', 'com_mokosuite')) { $this->jsonResponse(['success' => false, 'message' => 'Access denied.']); return; @@ -155,7 +155,7 @@ class DisplayController extends BaseController $db = Factory::getDbo(); $db->setQuery( $db->getQuery(true) - ->update($db->quoteName('#__mokowaas_tickets')) + ->update($db->quoteName('#__mokosuite_tickets')) ->set($db->quoteName('assigned_to') . ' = ' . ($assignTo ?: 'NULL')) ->set($db->quoteName('modified') . ' = ' . $db->quote(Factory::getDate()->toSql())) ->where($db->quoteName('id') . ' = ' . $ticketId) @@ -186,7 +186,7 @@ class DisplayController extends BaseController } $type = Factory::getApplication()->getInput()->getString('type', ''); - $model = new \Moko\Component\MokoWaaS\Administrator\Model\PrivacyModel(); + $model = new \Moko\Component\MokoSuite\Administrator\Model\PrivacyModel(); $this->jsonResponse($model->createRequest($user->id, $type, 'Submitted via self-service portal')); } @@ -207,8 +207,8 @@ class DisplayController extends BaseController return true; } - // Anyone with mokowaas.tickets ACL on the component is staff - return $user->authorise('mokowaas.tickets', 'com_mokowaas'); + // Anyone with mokosuite.tickets ACL on the component is staff + return $user->authorise('mokosuite.tickets', 'com_mokosuite'); } /** diff --git a/source/packages/com_mokowaas/site/src/Model/PortalModel.php b/source/packages/com_mokosuite/site/src/Model/PortalModel.php similarity index 56% rename from source/packages/com_mokowaas/site/src/Model/PortalModel.php rename to source/packages/com_mokosuite/site/src/Model/PortalModel.php index b29b49a7..2b85d2b3 100644 --- a/source/packages/com_mokowaas/site/src/Model/PortalModel.php +++ b/source/packages/com_mokosuite/site/src/Model/PortalModel.php @@ -1,5 +1,5 @@ setQuery($db->getQuery(true)->select('COUNT(*)')->from($db->quoteName('#__mokowaas_erp_orders'))->where($db->quoteName('contact_id') . ' = ' . $contactId)->where($db->quoteName('status') . ' NOT IN (' . $db->quote('delivered') . ',' . $db->quote('cancelled') . ')')); + $db->setQuery($db->getQuery(true)->select('COUNT(*)')->from($db->quoteName('#__mokosuite_erp_orders'))->where($db->quoteName('contact_id') . ' = ' . $contactId)->where($db->quoteName('status') . ' NOT IN (' . $db->quote('delivered') . ',' . $db->quote('cancelled') . ')')); $dash->open_orders = (int) $db->loadResult(); // Unpaid invoices - $db->setQuery($db->getQuery(true)->select('COUNT(*)')->select('COALESCE(SUM(total - amount_paid), 0) AS total_due')->from($db->quoteName('#__mokowaas_erp_invoices'))->where($db->quoteName('contact_id') . ' = ' . $contactId)->where($db->quoteName('status') . ' IN (' . $db->quote('sent') . ',' . $db->quote('partial') . ',' . $db->quote('overdue') . ')')); + $db->setQuery($db->getQuery(true)->select('COUNT(*)')->select('COALESCE(SUM(total - amount_paid), 0) AS total_due')->from($db->quoteName('#__mokosuite_erp_invoices'))->where($db->quoteName('contact_id') . ' = ' . $contactId)->where($db->quoteName('status') . ' IN (' . $db->quote('sent') . ',' . $db->quote('partial') . ',' . $db->quote('overdue') . ')')); $inv = $db->loadObject(); $dash->unpaid_invoices = (int) $inv->{'COUNT(*)'}; $dash->total_due = (float) $inv->total_due; // Open tickets - $db->setQuery($db->getQuery(true)->select('COUNT(*)')->from($db->quoteName('#__mokowaas_tickets'))->where($db->quoteName('created_by') . ' = ' . (int) Factory::getUser()->id)->where($db->quoteName('status') . ' NOT IN (' . $db->quote('closed') . ',' . $db->quote('resolved') . ')')); + $db->setQuery($db->getQuery(true)->select('COUNT(*)')->from($db->quoteName('#__mokosuite_tickets'))->where($db->quoteName('created_by') . ' = ' . (int) Factory::getUser()->id)->where($db->quoteName('status') . ' NOT IN (' . $db->quote('closed') . ',' . $db->quote('resolved') . ')')); $dash->open_tickets = (int) $db->loadResult(); // Pending signatures - $db->setQuery($db->getQuery(true)->select('COUNT(*)')->from($db->quoteName('#__mokowaas_erp_esign_signers'))->where($db->quoteName('email') . ' = ' . $db->quote(Factory::getUser()->email))->where($db->quoteName('status') . ' IN (' . $db->quote('pending') . ',' . $db->quote('viewed') . ')')); + $db->setQuery($db->getQuery(true)->select('COUNT(*)')->from($db->quoteName('#__mokosuite_erp_esign_signers'))->where($db->quoteName('email') . ' = ' . $db->quote(Factory::getUser()->email))->where($db->quoteName('status') . ' IN (' . $db->quote('pending') . ',' . $db->quote('viewed') . ')')); $dash->pending_signatures = (int) $db->loadResult(); // Recent orders - $db->setQuery($db->getQuery(true)->select('id, ref, status, total, created')->from($db->quoteName('#__mokowaas_erp_orders'))->where($db->quoteName('contact_id') . ' = ' . $contactId)->order('created DESC'), 0, 5); + $db->setQuery($db->getQuery(true)->select('id, ref, status, total, created')->from($db->quoteName('#__mokosuite_erp_orders'))->where($db->quoteName('contact_id') . ' = ' . $contactId)->order('created DESC'), 0, 5); $dash->recent_orders = $db->loadObjectList() ?: []; return $dash; @@ -65,18 +65,18 @@ class PortalModel extends BaseDatabaseModel public function getOrders(int $contactId, int $limit = 25): array { $db = $this->getDatabase(); - $db->setQuery($db->getQuery(true)->select('*')->from($db->quoteName('#__mokowaas_erp_orders'))->where($db->quoteName('contact_id') . ' = ' . $contactId)->order('created DESC'), 0, $limit); + $db->setQuery($db->getQuery(true)->select('*')->from($db->quoteName('#__mokosuite_erp_orders'))->where($db->quoteName('contact_id') . ' = ' . $contactId)->order('created DESC'), 0, $limit); return $db->loadObjectList() ?: []; } public function getOrder(int $contactId, int $id): ?object { $db = $this->getDatabase(); - $db->setQuery($db->getQuery(true)->select('*')->from($db->quoteName('#__mokowaas_erp_orders'))->where($db->quoteName('id') . ' = ' . $id)->where($db->quoteName('contact_id') . ' = ' . $contactId)); + $db->setQuery($db->getQuery(true)->select('*')->from($db->quoteName('#__mokosuite_erp_orders'))->where($db->quoteName('id') . ' = ' . $id)->where($db->quoteName('contact_id') . ' = ' . $contactId)); $order = $db->loadObject(); if (!$order) { return null; } - $db->setQuery($db->getQuery(true)->select('oi.*, p.sku')->from($db->quoteName('#__mokowaas_erp_order_items', 'oi'))->join('LEFT', $db->quoteName('#__mokowaas_erp_products', 'p') . ' ON p.id = oi.product_id')->where($db->quoteName('oi.order_id') . ' = ' . $id)->order('oi.position ASC')); + $db->setQuery($db->getQuery(true)->select('oi.*, p.sku')->from($db->quoteName('#__mokosuite_erp_order_items', 'oi'))->join('LEFT', $db->quoteName('#__mokosuite_erp_products', 'p') . ' ON p.id = oi.product_id')->where($db->quoteName('oi.order_id') . ' = ' . $id)->order('oi.position ASC')); $order->items = $db->loadObjectList() ?: []; return $order; } @@ -84,18 +84,18 @@ class PortalModel extends BaseDatabaseModel public function getInvoices(int $contactId, int $limit = 25): array { $db = $this->getDatabase(); - $db->setQuery($db->getQuery(true)->select('*, (total - amount_paid) AS balance_due')->from($db->quoteName('#__mokowaas_erp_invoices'))->where($db->quoteName('contact_id') . ' = ' . $contactId)->order('created DESC'), 0, $limit); + $db->setQuery($db->getQuery(true)->select('*, (total - amount_paid) AS balance_due')->from($db->quoteName('#__mokosuite_erp_invoices'))->where($db->quoteName('contact_id') . ' = ' . $contactId)->order('created DESC'), 0, $limit); return $db->loadObjectList() ?: []; } public function getInvoice(int $contactId, int $id): ?object { $db = $this->getDatabase(); - $db->setQuery($db->getQuery(true)->select('*, (total - amount_paid) AS balance_due')->from($db->quoteName('#__mokowaas_erp_invoices'))->where($db->quoteName('id') . ' = ' . $id)->where($db->quoteName('contact_id') . ' = ' . $contactId)); + $db->setQuery($db->getQuery(true)->select('*, (total - amount_paid) AS balance_due')->from($db->quoteName('#__mokosuite_erp_invoices'))->where($db->quoteName('id') . ' = ' . $id)->where($db->quoteName('contact_id') . ' = ' . $contactId)); $inv = $db->loadObject(); if (!$inv) { return null; } - $db->setQuery($db->getQuery(true)->select('ii.*, p.sku')->from($db->quoteName('#__mokowaas_erp_invoice_items', 'ii'))->join('LEFT', $db->quoteName('#__mokowaas_erp_products', 'p') . ' ON p.id = ii.product_id')->where($db->quoteName('ii.invoice_id') . ' = ' . $id)->order('ii.position ASC')); + $db->setQuery($db->getQuery(true)->select('ii.*, p.sku')->from($db->quoteName('#__mokosuite_erp_invoice_items', 'ii'))->join('LEFT', $db->quoteName('#__mokosuite_erp_products', 'p') . ' ON p.id = ii.product_id')->where($db->quoteName('ii.invoice_id') . ' = ' . $id)->order('ii.position ASC')); $inv->items = $db->loadObjectList() ?: []; return $inv; } diff --git a/source/packages/com_mokowaas/site/src/View/Invoice/HtmlView.php b/source/packages/com_mokosuite/site/src/View/Invoice/HtmlView.php similarity index 84% rename from source/packages/com_mokowaas/site/src/View/Invoice/HtmlView.php rename to source/packages/com_mokosuite/site/src/View/Invoice/HtmlView.php index dc4aab5c..8102b13e 100644 --- a/source/packages/com_mokowaas/site/src/View/Invoice/HtmlView.php +++ b/source/packages/com_mokosuite/site/src/View/Invoice/HtmlView.php @@ -1,5 +1,5 @@ invoice) { throw new \Exception('Invoice not found', 404); } Factory::getApplication()->getDocument()->getWebAssetManager() - ->registerAndUseStyle('com_mokowaas.portal', 'com_mokowaas/portal.css'); + ->registerAndUseStyle('com_mokosuite.portal', 'com_mokosuite/portal.css'); parent::display($tpl); } } diff --git a/source/packages/com_mokowaas/site/src/View/Invoices/HtmlView.php b/source/packages/com_mokosuite/site/src/View/Invoices/HtmlView.php similarity index 81% rename from source/packages/com_mokowaas/site/src/View/Invoices/HtmlView.php rename to source/packages/com_mokosuite/site/src/View/Invoices/HtmlView.php index e17eb9a2..effe3f7d 100644 --- a/source/packages/com_mokowaas/site/src/View/Invoices/HtmlView.php +++ b/source/packages/com_mokosuite/site/src/View/Invoices/HtmlView.php @@ -1,5 +1,5 @@ items = $contactId ? $model->getInvoices($contactId) : []; Factory::getApplication()->getDocument()->getWebAssetManager() - ->registerAndUseStyle('com_mokowaas.portal', 'com_mokowaas/portal.css'); + ->registerAndUseStyle('com_mokosuite.portal', 'com_mokosuite/portal.css'); parent::display($tpl); } } diff --git a/source/packages/com_mokowaas/site/src/View/License/HtmlView.php b/source/packages/com_mokosuite/site/src/View/License/HtmlView.php similarity index 72% rename from source/packages/com_mokowaas/site/src/View/License/HtmlView.php rename to source/packages/com_mokosuite/site/src/View/License/HtmlView.php index 47b4f25b..f39f7d8f 100644 --- a/source/packages/com_mokowaas/site/src/View/License/HtmlView.php +++ b/source/packages/com_mokosuite/site/src/View/License/HtmlView.php @@ -1,5 +1,5 @@ guest) { Factory::getApplication()->redirect('index.php?option=com_users&view=login'); return; } - // License data would come from plg_system_mokowaas_license cache + // License data would come from plg_system_mokosuite_license cache // For now, placeholder structure $this->licenseData = (object) [ 'valid' => true, - 'package' => 'MokoWaaS+ERP', + 'package' => 'MokoSuite+ERP', 'services' => ['base', 'erp'], 'expiry' => null, 'dlid' => '', ]; Factory::getApplication()->getDocument()->getWebAssetManager() - ->registerAndUseStyle('com_mokowaas.portal', 'com_mokowaas/portal.css'); + ->registerAndUseStyle('com_mokosuite.portal', 'com_mokosuite/portal.css'); parent::display($tpl); } } diff --git a/source/packages/com_mokowaas/site/src/View/Order/HtmlView.php b/source/packages/com_mokosuite/site/src/View/Order/HtmlView.php similarity index 84% rename from source/packages/com_mokowaas/site/src/View/Order/HtmlView.php rename to source/packages/com_mokosuite/site/src/View/Order/HtmlView.php index e0fdb29e..79574f12 100644 --- a/source/packages/com_mokowaas/site/src/View/Order/HtmlView.php +++ b/source/packages/com_mokosuite/site/src/View/Order/HtmlView.php @@ -1,5 +1,5 @@ order) { throw new \Exception('Order not found', 404); } Factory::getApplication()->getDocument()->getWebAssetManager() - ->registerAndUseStyle('com_mokowaas.portal', 'com_mokowaas/portal.css'); + ->registerAndUseStyle('com_mokosuite.portal', 'com_mokosuite/portal.css'); parent::display($tpl); } } diff --git a/source/packages/com_mokowaas/site/src/View/Orders/HtmlView.php b/source/packages/com_mokosuite/site/src/View/Orders/HtmlView.php similarity index 81% rename from source/packages/com_mokowaas/site/src/View/Orders/HtmlView.php rename to source/packages/com_mokosuite/site/src/View/Orders/HtmlView.php index fc6a034f..5f5967e7 100644 --- a/source/packages/com_mokowaas/site/src/View/Orders/HtmlView.php +++ b/source/packages/com_mokosuite/site/src/View/Orders/HtmlView.php @@ -1,5 +1,5 @@ items = $contactId ? $model->getOrders($contactId) : []; Factory::getApplication()->getDocument()->getWebAssetManager() - ->registerAndUseStyle('com_mokowaas.portal', 'com_mokowaas/portal.css'); + ->registerAndUseStyle('com_mokosuite.portal', 'com_mokosuite/portal.css'); parent::display($tpl); } } diff --git a/source/packages/com_mokowaas/site/src/View/Portal/HtmlView.php b/source/packages/com_mokosuite/site/src/View/Portal/HtmlView.php similarity index 82% rename from source/packages/com_mokowaas/site/src/View/Portal/HtmlView.php rename to source/packages/com_mokosuite/site/src/View/Portal/HtmlView.php index 3fd613b8..01c09b94 100644 --- a/source/packages/com_mokowaas/site/src/View/Portal/HtmlView.php +++ b/source/packages/com_mokosuite/site/src/View/Portal/HtmlView.php @@ -1,5 +1,5 @@ dashboard = $this->contactId ? $model->getDashboard($this->contactId) : null; $wa = Factory::getApplication()->getDocument()->getWebAssetManager(); - $wa->registerAndUseStyle('com_mokowaas.portal', 'com_mokowaas/portal.css'); + $wa->registerAndUseStyle('com_mokosuite.portal', 'com_mokosuite/portal.css'); parent::display($tpl); } diff --git a/source/packages/com_mokowaas/site/src/View/Privacy/HtmlView.php b/source/packages/com_mokosuite/site/src/View/Privacy/HtmlView.php similarity index 85% rename from source/packages/com_mokowaas/site/src/View/Privacy/HtmlView.php rename to source/packages/com_mokosuite/site/src/View/Privacy/HtmlView.php index a6b70082..b9adffc2 100644 --- a/source/packages/com_mokowaas/site/src/View/Privacy/HtmlView.php +++ b/source/packages/com_mokosuite/site/src/View/Privacy/HtmlView.php @@ -1,5 +1,5 @@ guest) { Factory::getApplication()->redirect(Route::_( - 'index.php?option=com_users&view=login&return=' . base64_encode('index.php?option=com_mokowaas&view=privacy'), + 'index.php?option=com_users&view=login&return=' . base64_encode('index.php?option=com_mokosuite&view=privacy'), false )); @@ -31,7 +31,7 @@ class HtmlView extends BaseHtmlView // Get user's data requests $query = $db->getQuery(true) ->select('*') - ->from($db->quoteName('#__mokowaas_data_requests')) + ->from($db->quoteName('#__mokosuite_data_requests')) ->where($db->quoteName('user_id') . ' = ' . (int) $user->id) ->order($db->quoteName('created') . ' DESC'); @@ -51,7 +51,7 @@ class HtmlView extends BaseHtmlView $db->setQuery( $db->getQuery(true) ->select('*') - ->from($db->quoteName('#__mokowaas_consent_log')) + ->from($db->quoteName('#__mokosuite_consent_log')) ->where($db->quoteName('user_id') . ' = ' . (int) $user->id) ->order($db->quoteName('created') . ' DESC') ->setLimit(20) diff --git a/source/packages/com_mokowaas/site/src/View/Sign/HtmlView.php b/source/packages/com_mokosuite/site/src/View/Sign/HtmlView.php similarity index 71% rename from source/packages/com_mokowaas/site/src/View/Sign/HtmlView.php rename to source/packages/com_mokosuite/site/src/View/Sign/HtmlView.php index ae07de0e..d27aeb32 100644 --- a/source/packages/com_mokowaas/site/src/View/Sign/HtmlView.php +++ b/source/packages/com_mokosuite/site/src/View/Sign/HtmlView.php @@ -1,5 +1,5 @@ setQuery( $db->getQuery(true) ->select('s.*, r.title AS request_title, r.description AS request_description, r.status AS request_status, r.require_selfie, r.require_id, r.require_consent') - ->from($db->quoteName('#__mokowaas_erp_esign_signers', 's')) - ->join('INNER', $db->quoteName('#__mokowaas_erp_esign_requests', 'r') . ' ON r.id = s.request_id') + ->from($db->quoteName('#__mokosuite_erp_esign_signers', 's')) + ->join('INNER', $db->quoteName('#__mokosuite_erp_esign_requests', 'r') . ' ON r.id = s.request_id') ->where($db->quoteName('s.token') . ' = ' . $db->quote($token)) ); $this->signer = $db->loadObject(); @@ -33,8 +33,8 @@ class HtmlView extends BaseHtmlView } $wa = Factory::getApplication()->getDocument()->getWebAssetManager(); - $wa->registerAndUseStyle('com_mokowaas.portal', 'com_mokowaas/portal.css'); - $wa->registerAndUseScript('com_mokowaas.signature-pad', 'com_mokowaas/signature-pad.js', [], ['defer' => true]); + $wa->registerAndUseStyle('com_mokosuite.portal', 'com_mokosuite/portal.css'); + $wa->registerAndUseScript('com_mokosuite.signature-pad', 'com_mokosuite/signature-pad.js', [], ['defer' => true]); parent::display($tpl); } diff --git a/source/packages/com_mokowaas/site/src/View/SignVerify/HtmlView.php b/source/packages/com_mokosuite/site/src/View/SignVerify/HtmlView.php similarity index 66% rename from source/packages/com_mokowaas/site/src/View/SignVerify/HtmlView.php rename to source/packages/com_mokosuite/site/src/View/SignVerify/HtmlView.php index 988ccca4..b77c7284 100644 --- a/source/packages/com_mokowaas/site/src/View/SignVerify/HtmlView.php +++ b/source/packages/com_mokosuite/site/src/View/SignVerify/HtmlView.php @@ -1,5 +1,5 @@ setQuery($db->getQuery(true)->select('id, ref, title, status, date_creation, date_signature')->from($db->quoteName('#__mokowaas_erp_esign_requests'))->where($db->quoteName('verification_hash') . ' = ' . $db->quote($hash))); + $db->setQuery($db->getQuery(true)->select('id, ref, title, status, date_creation, date_signature')->from($db->quoteName('#__mokosuite_erp_esign_requests'))->where($db->quoteName('verification_hash') . ' = ' . $db->quote($hash))); $this->request = $db->loadObject(); if ($this->request) { - $db->setQuery($db->getQuery(true)->select('role, email, firstname, lastname, status, date_signed, ip_address, geo_country, geo_city')->from($db->quoteName('#__mokowaas_erp_esign_signers'))->where($db->quoteName('request_id') . ' = ' . (int) $this->request->id)->order('position ASC')); + $db->setQuery($db->getQuery(true)->select('role, email, firstname, lastname, status, date_signed, ip_address, geo_country, geo_city')->from($db->quoteName('#__mokosuite_erp_esign_signers'))->where($db->quoteName('request_id') . ' = ' . (int) $this->request->id)->order('position ASC')); $this->request->signers = $db->loadObjectList() ?: []; - $db->setQuery($db->getQuery(true)->select('code, label, ip, created')->from($db->quoteName('#__mokowaas_erp_esign_events'))->where($db->quoteName('request_id') . ' = ' . (int) $this->request->id)->order('created ASC')); + $db->setQuery($db->getQuery(true)->select('code, label, ip, created')->from($db->quoteName('#__mokosuite_erp_esign_events'))->where($db->quoteName('request_id') . ' = ' . (int) $this->request->id)->order('created ASC')); $this->request->events = $db->loadObjectList() ?: []; } } Factory::getApplication()->getDocument()->getWebAssetManager() - ->registerAndUseStyle('com_mokowaas.portal', 'com_mokowaas/portal.css'); + ->registerAndUseStyle('com_mokosuite.portal', 'com_mokosuite/portal.css'); parent::display($tpl); } } diff --git a/source/packages/com_mokowaas/site/src/View/Ticket/HtmlView.php b/source/packages/com_mokosuite/site/src/View/Ticket/HtmlView.php similarity index 82% rename from source/packages/com_mokowaas/site/src/View/Ticket/HtmlView.php rename to source/packages/com_mokosuite/site/src/View/Ticket/HtmlView.php index 4a4289e6..de882fc5 100644 --- a/source/packages/com_mokowaas/site/src/View/Ticket/HtmlView.php +++ b/source/packages/com_mokosuite/site/src/View/Ticket/HtmlView.php @@ -1,12 +1,12 @@ getIdentity(); $id = Factory::getApplication()->getInput()->getInt('id', 0); - $this->isStaff = $user->authorise('core.admin') || $user->authorise('mokowaas.tickets', 'com_mokowaas'); - $this->canAssign = $user->authorise('core.admin') || $user->authorise('mokowaas.tickets.assign', 'com_mokowaas'); + $this->isStaff = $user->authorise('core.admin') || $user->authorise('mokosuite.tickets', 'com_mokosuite'); + $this->canAssign = $user->authorise('core.admin') || $user->authorise('mokosuite.tickets.assign', 'com_mokosuite'); // Get ticket — staff see any, customers see only their own $query = $db->getQuery(true) @@ -38,8 +38,8 @@ class HtmlView extends BaseHtmlView $db->quoteName('u.email', 'created_by_email'), $db->quoteName('a.name', 'assigned_to_name'), ]) - ->from($db->quoteName('#__mokowaas_tickets', 't')) - ->leftJoin($db->quoteName('#__mokowaas_ticket_categories', 'c') . ' ON c.id = t.category_id') + ->from($db->quoteName('#__mokosuite_tickets', 't')) + ->leftJoin($db->quoteName('#__mokosuite_ticket_categories', 'c') . ' ON c.id = t.category_id') ->leftJoin($db->quoteName('#__users', 'u') . ' ON u.id = t.created_by') ->leftJoin($db->quoteName('#__users', 'a') . ' ON a.id = t.assigned_to') ->where($db->quoteName('t.id') . ' = ' . $id); @@ -55,7 +55,7 @@ class HtmlView extends BaseHtmlView if (!$this->ticket) { Factory::getApplication()->enqueueMessage('Ticket not found.', 'error'); - Factory::getApplication()->redirect(Route::_('index.php?option=com_mokowaas&view=tickets', false)); + Factory::getApplication()->redirect(Route::_('index.php?option=com_mokosuite&view=tickets', false)); return; } @@ -66,7 +66,7 @@ class HtmlView extends BaseHtmlView $db->quoteName('r') . '.*', $db->quoteName('u.name', 'user_name'), ]) - ->from($db->quoteName('#__mokowaas_ticket_replies', 'r')) + ->from($db->quoteName('#__mokosuite_ticket_replies', 'r')) ->leftJoin($db->quoteName('#__users', 'u') . ' ON u.id = r.user_id') ->where($db->quoteName('r.ticket_id') . ' = ' . $id); diff --git a/source/packages/com_mokowaas/site/src/View/Tickets/HtmlView.php b/source/packages/com_mokosuite/site/src/View/Tickets/HtmlView.php similarity index 83% rename from source/packages/com_mokowaas/site/src/View/Tickets/HtmlView.php rename to source/packages/com_mokosuite/site/src/View/Tickets/HtmlView.php index 5988fba9..d9ebba40 100644 --- a/source/packages/com_mokowaas/site/src/View/Tickets/HtmlView.php +++ b/source/packages/com_mokosuite/site/src/View/Tickets/HtmlView.php @@ -1,12 +1,12 @@ getIdentity(); $this->isStaff = $user->authorise('core.admin') - || $user->authorise('mokowaas.tickets', 'com_mokowaas'); + || $user->authorise('mokosuite.tickets', 'com_mokosuite'); // Staff see all tickets, customers see their own $query = $db->getQuery(true) @@ -40,8 +40,8 @@ class HtmlView extends BaseHtmlView $db->quoteName('u.name', 'created_by_name'), $db->quoteName('a.name', 'assigned_to_name'), ]) - ->from($db->quoteName('#__mokowaas_tickets', 't')) - ->leftJoin($db->quoteName('#__mokowaas_ticket_categories', 'c') . ' ON c.id = t.category_id') + ->from($db->quoteName('#__mokosuite_tickets', 't')) + ->leftJoin($db->quoteName('#__mokosuite_ticket_categories', 'c') . ' ON c.id = t.category_id') ->leftJoin($db->quoteName('#__users', 'u') . ' ON u.id = t.created_by') ->leftJoin($db->quoteName('#__users', 'a') . ' ON a.id = t.assigned_to'); @@ -64,7 +64,7 @@ class HtmlView extends BaseHtmlView // Categories for new ticket form $query = $db->getQuery(true) ->select([$db->quoteName('id'), $db->quoteName('title')]) - ->from($db->quoteName('#__mokowaas_ticket_categories')) + ->from($db->quoteName('#__mokosuite_ticket_categories')) ->where($db->quoteName('published') . ' = 1') ->order($db->quoteName('ordering') . ' ASC'); $db->setQuery($query); diff --git a/source/packages/com_mokowaas/site/tmpl/invoice/default.php b/source/packages/com_mokosuite/site/tmpl/invoice/default.php similarity index 90% rename from source/packages/com_mokowaas/site/tmpl/invoice/default.php rename to source/packages/com_mokosuite/site/tmpl/invoice/default.php index 073094e4..acb5bfa5 100644 --- a/source/packages/com_mokowaas/site/tmpl/invoice/default.php +++ b/source/packages/com_mokosuite/site/tmpl/invoice/default.php @@ -3,8 +3,8 @@ defined('_JEXEC') or die; use Joomla\CMS\Router\Route; $inv = $this->invoice; ?> -
- My Invoices +
+ My Invoices

escape($inv->ref); ?>

diff --git a/source/packages/com_mokowaas/site/tmpl/invoices/default.php b/source/packages/com_mokosuite/site/tmpl/invoices/default.php similarity index 83% rename from source/packages/com_mokowaas/site/tmpl/invoices/default.php rename to source/packages/com_mokosuite/site/tmpl/invoices/default.php index 60b1979f..fa062f06 100644 --- a/source/packages/com_mokowaas/site/tmpl/invoices/default.php +++ b/source/packages/com_mokosuite/site/tmpl/invoices/default.php @@ -2,10 +2,10 @@ defined('_JEXEC') or die; use Joomla\CMS\Router\Route; ?> -
+

My Invoices

- Portal + Portal
@@ -15,7 +15,7 @@ use Joomla\CMS\Router\Route; $isOverdue = $inv->due_date && $inv->due_date < date('Y-m-d') && \in_array($inv->status, ['sent', 'partial', 'overdue']); ?> - + diff --git a/source/packages/com_mokowaas/site/tmpl/license/default.php b/source/packages/com_mokosuite/site/tmpl/license/default.php similarity index 89% rename from source/packages/com_mokowaas/site/tmpl/license/default.php rename to source/packages/com_mokosuite/site/tmpl/license/default.php index ea29b69d..f428c7b0 100644 --- a/source/packages/com_mokowaas/site/tmpl/license/default.php +++ b/source/packages/com_mokosuite/site/tmpl/license/default.php @@ -5,10 +5,10 @@ use Joomla\CMS\Session\Session; $lic = $this->licenseData; ?> -
+

License & Subscription

- Portal + Portal
@@ -44,7 +44,7 @@ $lic = $this->licenseData;
Update License Key
- +
diff --git a/source/packages/com_mokowaas/site/tmpl/order/default.php b/source/packages/com_mokosuite/site/tmpl/order/default.php similarity index 88% rename from source/packages/com_mokowaas/site/tmpl/order/default.php rename to source/packages/com_mokosuite/site/tmpl/order/default.php index e22c03a4..04191a34 100644 --- a/source/packages/com_mokowaas/site/tmpl/order/default.php +++ b/source/packages/com_mokosuite/site/tmpl/order/default.php @@ -3,8 +3,8 @@ defined('_JEXEC') or die; use Joomla\CMS\Router\Route; $o = $this->order; ?> -
- My Orders +
+ My Orders

escape($o->ref); ?>

diff --git a/source/packages/com_mokowaas/site/tmpl/orders/default.php b/source/packages/com_mokosuite/site/tmpl/orders/default.php similarity index 77% rename from source/packages/com_mokowaas/site/tmpl/orders/default.php rename to source/packages/com_mokosuite/site/tmpl/orders/default.php index 916dc545..a7b2771e 100644 --- a/source/packages/com_mokowaas/site/tmpl/orders/default.php +++ b/source/packages/com_mokosuite/site/tmpl/orders/default.php @@ -2,10 +2,10 @@ defined('_JEXEC') or die; use Joomla\CMS\Router\Route; ?> -
+

My Orders

- Portal + Portal
escape($inv->ref); ?>escape($inv->ref); ?> status); ?> $total, 2); ?> $amount_paid, 2); ?>
@@ -13,7 +13,7 @@ use Joomla\CMS\Router\Route; items as $order) : ?> - + diff --git a/source/packages/com_mokowaas/site/tmpl/portal/default.php b/source/packages/com_mokosuite/site/tmpl/portal/default.php similarity index 72% rename from source/packages/com_mokowaas/site/tmpl/portal/default.php rename to source/packages/com_mokosuite/site/tmpl/portal/default.php index 01340112..091ea59c 100644 --- a/source/packages/com_mokowaas/site/tmpl/portal/default.php +++ b/source/packages/com_mokosuite/site/tmpl/portal/default.php @@ -6,7 +6,7 @@ $dash = $this->dashboard; $user = \Joomla\CMS\Factory::getUser(); ?> -
+

Welcome, escape($user->name); ?>

contactId) : ?> @@ -21,7 +21,7 @@ $user = \Joomla\CMS\Factory::getUser();
Open Orders
@@ -33,7 +33,7 @@ $user = \Joomla\CMS\Factory::getUser(); total_due > 0) : ?>
$total_due, 2); ?> due
@@ -44,7 +44,7 @@ $user = \Joomla\CMS\Factory::getUser();
Open Tickets
@@ -55,7 +55,7 @@ $user = \Joomla\CMS\Factory::getUser();
Pending Signatures
@@ -66,7 +66,7 @@ $user = \Joomla\CMS\Factory::getUser();
Recent Orders
- View All + View All
escape($order->ref); ?>escape($order->ref); ?> status); ?> payment_status); ?> $total, 2); ?>
@@ -74,7 +74,7 @@ $user = \Joomla\CMS\Factory::getUser(); recent_orders as $order) : ?> - + @@ -88,9 +88,9 @@ $user = \Joomla\CMS\Factory::getUser(); diff --git a/source/packages/com_mokowaas/site/tmpl/privacy/default.php b/source/packages/com_mokosuite/site/tmpl/privacy/default.php similarity index 96% rename from source/packages/com_mokowaas/site/tmpl/privacy/default.php rename to source/packages/com_mokosuite/site/tmpl/privacy/default.php index f26b4e6a..2e140433 100644 --- a/source/packages/com_mokowaas/site/tmpl/privacy/default.php +++ b/source/packages/com_mokosuite/site/tmpl/privacy/default.php @@ -15,7 +15,7 @@ $statusLabel = ['pending' => 'Pending', 'processing' => 'Processing', 'completed $statusClass = ['pending' => 'warning', 'processing' => 'info', 'completed' => 'success', 'denied' => 'secondary']; ?> -
+

My Privacy & Data

Manage your personal data, download your information, or request account deletion.

@@ -99,7 +99,7 @@ document.querySelectorAll('.btn-data-request').forEach(function(btn) { var fd = new FormData(); fd.append('type', type); fd.append('', '1'); - fetch('', { + fetch('', { method: 'POST', body: fd, headers: {'X-Requested-With': 'XMLHttpRequest'} }) .then(function(r) { return r.json(); }) diff --git a/source/packages/com_mokowaas/site/tmpl/sign/default.php b/source/packages/com_mokosuite/site/tmpl/sign/default.php similarity index 98% rename from source/packages/com_mokowaas/site/tmpl/sign/default.php rename to source/packages/com_mokosuite/site/tmpl/sign/default.php index f658b58f..5550425b 100644 --- a/source/packages/com_mokowaas/site/tmpl/sign/default.php +++ b/source/packages/com_mokosuite/site/tmpl/sign/default.php @@ -6,7 +6,7 @@ $request = $this->request; $token = \Joomla\CMS\Factory::getApplication()->getInput()->get('token', '', 'ALNUM'); ?> -
+
Invalid or expired signing link.
status === 'signed') : ?> diff --git a/source/packages/com_mokowaas/site/tmpl/signverify/default.php b/source/packages/com_mokosuite/site/tmpl/signverify/default.php similarity index 98% rename from source/packages/com_mokowaas/site/tmpl/signverify/default.php rename to source/packages/com_mokosuite/site/tmpl/signverify/default.php index 504eb3c0..fac999f9 100644 --- a/source/packages/com_mokowaas/site/tmpl/signverify/default.php +++ b/source/packages/com_mokosuite/site/tmpl/signverify/default.php @@ -2,7 +2,7 @@ defined('_JEXEC') or die; $req = $this->request; ?> -
+
Verification not found. Check the verification link.
diff --git a/source/packages/com_mokowaas/site/tmpl/ticket/default.php b/source/packages/com_mokosuite/site/tmpl/ticket/default.php similarity index 93% rename from source/packages/com_mokowaas/site/tmpl/ticket/default.php rename to source/packages/com_mokosuite/site/tmpl/ticket/default.php index 7f84e579..ca7cb7ab 100644 --- a/source/packages/com_mokowaas/site/tmpl/ticket/default.php +++ b/source/packages/com_mokosuite/site/tmpl/ticket/default.php @@ -22,9 +22,9 @@ $statusClass = [ ]; ?> -
+
@@ -107,7 +107,7 @@ $statusClass = [
status === 'closed'): ?>
- This ticket is closed. Open a new ticket if you need further help. + This ticket is closed. Open a new ticket if you need further help.
@@ -197,7 +197,7 @@ document.addEventListener('DOMContentLoaded', function() { fd.append('body', body); fd.append('is_internal', isInternal ? '1' : '0'); fd.append(token, '1'); - fetch('', { + fetch('', { method:'POST', body:fd, headers:{'X-Requested-With':'XMLHttpRequest'} }).then(function(r){return r.json()}).then(function(d){ if (d.success) location.reload(); @@ -212,7 +212,7 @@ document.addEventListener('DOMContentLoaded', function() { fd.append('ticket_id', ticketId); fd.append('status', this.dataset.status); fd.append(token, '1'); - fetch('', { + fetch('', { method:'POST', body:fd, headers:{'X-Requested-With':'XMLHttpRequest'} }).then(function(r){return r.json()}).then(function(d){ if (d.success) location.reload(); @@ -229,7 +229,7 @@ document.addEventListener('DOMContentLoaded', function() { fd.append('ticket_id', ticketId); fd.append('assigned_to', ); fd.append(token, '1'); - fetch('', { + fetch('', { method:'POST', body:fd, headers:{'X-Requested-With':'XMLHttpRequest'} }).then(function(r){return r.json()}).then(function(d){ if (d.success) location.reload(); diff --git a/source/packages/com_mokowaas/site/tmpl/tickets/default.php b/source/packages/com_mokosuite/site/tmpl/tickets/default.php similarity index 87% rename from source/packages/com_mokowaas/site/tmpl/tickets/default.php rename to source/packages/com_mokosuite/site/tmpl/tickets/default.php index 8ed9e1a3..9ed8949e 100644 --- a/source/packages/com_mokowaas/site/tmpl/tickets/default.php +++ b/source/packages/com_mokosuite/site/tmpl/tickets/default.php @@ -20,16 +20,16 @@ $statusClass = [ ]; ?> -
+

- + New Ticket - +
- - + + diff --git a/source/packages/com_mokowaas/site/tmpl/tickets/submit.php b/source/packages/com_mokosuite/site/tmpl/tickets/submit.php similarity index 94% rename from source/packages/com_mokowaas/site/tmpl/tickets/submit.php rename to source/packages/com_mokosuite/site/tmpl/tickets/submit.php index cc5da1b8..1c68a703 100644 --- a/source/packages/com_mokowaas/site/tmpl/tickets/submit.php +++ b/source/packages/com_mokosuite/site/tmpl/tickets/submit.php @@ -10,10 +10,10 @@ use Joomla\CMS\Session\Session; $categories = $this->categories; $token = Session::getFormToken(); -$searchUrl = Route::_('index.php?option=com_mokowaas&task=display.searchKb&format=json'); -$submitUrl = Route::_('index.php?option=com_mokowaas&task=display.submitTicket&format=json'); -$ticketUrl = Route::_('index.php?option=com_mokowaas&view=ticket&id='); -$ticketsUrl = Route::_('index.php?option=com_mokowaas&view=tickets'); +$searchUrl = Route::_('index.php?option=com_mokosuite&task=display.searchKb&format=json'); +$submitUrl = Route::_('index.php?option=com_mokosuite&task=display.submitTicket&format=json'); +$ticketUrl = Route::_('index.php?option=com_mokosuite&view=ticket&id='); +$ticketsUrl = Route::_('index.php?option=com_mokosuite&view=tickets'); // Check if Smart Search has indexed content $finderEnabled = false; @@ -24,7 +24,7 @@ try { } catch (\Throwable $e) {} ?> -
+

Submit a Support Request

diff --git a/source/packages/com_mokowaas/admin/access.xml b/source/packages/com_mokowaas/admin/access.xml deleted file mode 100644 index 753c1ee1..00000000 --- a/source/packages/com_mokowaas/admin/access.xml +++ /dev/null @@ -1,15 +0,0 @@ - - -
- - - - - - - - - - -
-
diff --git a/source/packages/com_mokowaas/admin/language/en-GB/com_mokowaas.ini b/source/packages/com_mokowaas/admin/language/en-GB/com_mokowaas.ini deleted file mode 100644 index f8a00220..00000000 --- a/source/packages/com_mokowaas/admin/language/en-GB/com_mokowaas.ini +++ /dev/null @@ -1,41 +0,0 @@ -; MokoWaaS Admin Dashboard - Language Strings -; Copyright (C) 2026 Moko Consulting. All rights reserved. -; License: GPL-3.0-or-later - -COM_MOKOWAAS_DASHBOARD_TITLE="MokoWaaS Control Panel" -COM_MOKOWAAS_SITE="Site" -COM_MOKOWAAS_DATABASE="Database" -COM_MOKOWAAS_DEBUG_ON="Debug ON" -COM_MOKOWAAS_OFFLINE="Offline" -COM_MOKOWAAS_CLEAR_CACHE="Clear Cache" -COM_MOKOWAAS_CHECK_UPDATES="Check Updates" -COM_MOKOWAAS_ENABLED="Enabled" -COM_MOKOWAAS_DISABLED="Disabled" -COM_MOKOWAAS_PROTECTED="Protected" -COM_MOKOWAAS_CONFIGURE="Configure" -COM_MOKOWAAS_TOGGLE_SUCCESS="Plugin state updated." -COM_MOKOWAAS_TOGGLE_FAIL="Failed to update plugin state." -COM_MOKOWAAS_CACHE_CLEARED="Cache cleared successfully." -COM_MOKOWAAS_EXTENSIONS_TITLE="Moko Extensions" -COM_MOKOWAAS_EXTENSIONS_INFO="Install Moko Consulting Joomla packages from the official release server. Updates are handled through Joomla's native System > Update mechanism — each package registers its own update server." -COM_MOKOWAAS_EXTENSIONS_LINK="Moko Extensions" -COM_MOKOWAAS_HTACCESS_TITLE=".htaccess Maker" -COM_MOKOWAAS_TICKETS_TITLE="Helpdesk" - -; ACL -COM_MOKOWAAS_ACL_DASHBOARD="View Dashboard" -COM_MOKOWAAS_ACL_DASHBOARD_DESC="Allow viewing the MokoWaaS control panel dashboard." -COM_MOKOWAAS_ACL_EXTENSIONS="Manage Extensions" -COM_MOKOWAAS_ACL_EXTENSIONS_DESC="Allow installing and uninstalling Moko extensions." -COM_MOKOWAAS_ACL_HTACCESS="Manage .htaccess" -COM_MOKOWAAS_ACL_HTACCESS_DESC="Allow editing and saving the .htaccess configuration." -COM_MOKOWAAS_ACL_TICKETS="View Tickets" -COM_MOKOWAAS_ACL_TICKETS_DESC="Allow viewing helpdesk tickets." -COM_MOKOWAAS_ACL_TICKETS_CREATE="Create Tickets" -COM_MOKOWAAS_ACL_TICKETS_CREATE_DESC="Allow creating new helpdesk tickets." -COM_MOKOWAAS_ACL_TICKETS_ASSIGN="Assign Tickets" -COM_MOKOWAAS_ACL_TICKETS_ASSIGN_DESC="Allow assigning tickets to other users." -COM_MOKOWAAS_ACL_PLUGINS_TOGGLE="Toggle Plugins" -COM_MOKOWAAS_ACL_PLUGINS_TOGGLE_DESC="Allow enabling and disabling MokoWaaS feature plugins." -COM_MOKOWAAS_ACL_CACHE="Clear Cache" -COM_MOKOWAAS_ACL_CACHE_DESC="Allow clearing the Joomla cache from the dashboard." diff --git a/source/packages/com_mokowaas/admin/language/en-GB/com_mokowaas.sys.ini b/source/packages/com_mokowaas/admin/language/en-GB/com_mokowaas.sys.ini deleted file mode 100644 index 3c71dbd1..00000000 --- a/source/packages/com_mokowaas/admin/language/en-GB/com_mokowaas.sys.ini +++ /dev/null @@ -1,19 +0,0 @@ -; MokoWaaS Admin Dashboard - System Language Strings -; Copyright (C) 2026 Moko Consulting. All rights reserved. -; License: GPL-3.0-or-later - -COM_MOKOWAAS="MokoWaaS" -COM_MOKOWAAS_DESCRIPTION="MokoWaaS admin dashboard and REST API. Control panel for managing site features, health monitoring, and remote management." -COM_MOKOWAAS_DASHBOARD_TITLE="MokoWaaS Control Panel" -COM_MOKOWAAS_MENU_DASHBOARD="Dashboard" -COM_MOKOWAAS_MENU_EXTENSIONS="Moko Extensions" -COM_MOKOWAAS_MENU_PLUGINS="Feature Plugins" -COM_MOKOWAAS_MENU_UPDATES="Joomla Updates" -COM_MOKOWAAS_MENU_CHECKIN="Global Check-in" -COM_MOKOWAAS_MENU_TICKETS="Helpdesk" -COM_MOKOWAAS_MENU_HTACCESS=".htaccess Maker" -COM_MOKOWAAS_MENU_PRIVACY="Privacy Guard" -COM_MOKOWAAS_MENU_WAFLOG="WAF Log" -COM_MOKOWAAS_MENU_DATABASE="Database Tools" -COM_MOKOWAAS_MENU_CLEANUP="Cache Cleanup" -COM_MOKOWAAS_MENU_CACHE="Cache Management" diff --git a/source/packages/com_mokowaas/admin/sql/uninstall.mysql.sql b/source/packages/com_mokowaas/admin/sql/uninstall.mysql.sql deleted file mode 100644 index b58b727d..00000000 --- a/source/packages/com_mokowaas/admin/sql/uninstall.mysql.sql +++ /dev/null @@ -1,13 +0,0 @@ --- --- MokoWaaS component uninstall — drop all tables --- -DROP TABLE IF EXISTS `#__mokowaas_download_keys`; -DROP TABLE IF EXISTS `#__mokowaas_retention_policies`; -DROP TABLE IF EXISTS `#__mokowaas_data_requests`; -DROP TABLE IF EXISTS `#__mokowaas_consent_log`; -DROP TABLE IF EXISTS `#__mokowaas_waf_log`; -DROP TABLE IF EXISTS `#__mokowaas_ticket_automation`; -DROP TABLE IF EXISTS `#__mokowaas_ticket_canned`; -DROP TABLE IF EXISTS `#__mokowaas_ticket_replies`; -DROP TABLE IF EXISTS `#__mokowaas_tickets`; -DROP TABLE IF EXISTS `#__mokowaas_ticket_categories`; diff --git a/source/packages/com_mokowaas/site/language/en-GB/com_mokowaas.ini b/source/packages/com_mokowaas/site/language/en-GB/com_mokowaas.ini deleted file mode 100644 index 3047c85e..00000000 --- a/source/packages/com_mokowaas/site/language/en-GB/com_mokowaas.ini +++ /dev/null @@ -1,11 +0,0 @@ -; MokoWaaS Customer Portal - Language Strings -; Copyright (C) 2026 Moko Consulting. All rights reserved. -; License: GPL-3.0-or-later - -COM_MOKOWAAS_PORTAL_TITLE="Support Portal" -COM_MOKOWAAS_PORTAL_MY_TICKETS="My Support Tickets" -COM_MOKOWAAS_PORTAL_NEW_TICKET="New Ticket" -COM_MOKOWAAS_PORTAL_SUBMIT="Submit Ticket" -COM_MOKOWAAS_PORTAL_REPLY="Send Reply" -COM_MOKOWAAS_PORTAL_NO_TICKETS="You haven't submitted any support tickets yet." -COM_MOKOWAAS_PORTAL_LOGIN_REQUIRED="Please log in to access the support portal." diff --git a/source/packages/mod_mokosuite_cache/language/en-GB/mod_mokosuite_cache.ini b/source/packages/mod_mokosuite_cache/language/en-GB/mod_mokosuite_cache.ini new file mode 100644 index 00000000..53874be4 --- /dev/null +++ b/source/packages/mod_mokosuite_cache/language/en-GB/mod_mokosuite_cache.ini @@ -0,0 +1,4 @@ +MOD_MOKOSUITE_CACHE="MokoSuite Cache Cleaner" +MOD_MOKOSUITE_CACHE_DESC="One-click cache and temp cleaner in the admin status bar." +MOD_MOKOSUITE_CACHE_CLEAR_ALL="Clear All Cache" +MOD_MOKOSUITE_CACHE_CLEAR_TEMP="Clear Temp" diff --git a/source/packages/mod_mokosuite_cache/language/en-GB/mod_mokosuite_cache.sys.ini b/source/packages/mod_mokosuite_cache/language/en-GB/mod_mokosuite_cache.sys.ini new file mode 100644 index 00000000..985e02ff --- /dev/null +++ b/source/packages/mod_mokosuite_cache/language/en-GB/mod_mokosuite_cache.sys.ini @@ -0,0 +1,2 @@ +MOD_MOKOSUITE_CACHE="MokoSuite Cache Cleaner" +MOD_MOKOSUITE_CACHE_DESC="One-click cache cleaner in the admin status bar. Clears all Joomla cache (site, admin, and expired)." diff --git a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml b/source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml similarity index 62% rename from source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml rename to source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml index dc1fffe4..06a8a97d 100644 --- a/source/packages/mod_mokowaas_cache/mod_mokowaas_cache.xml +++ b/source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml @@ -1,6 +1,6 @@ - mod_mokowaas_cache + mod_mokosuite_cache Moko Consulting 2026-06-04 Copyright (C) 2026 Moko Consulting. All rights reserved. @@ -8,17 +8,17 @@ hello@mokoconsulting.tech https://mokoconsulting.tech 02.34.43-dev - MOD_MOKOWAAS_CACHE_DESC - Moko\Module\MokoWaaSCache + MOD_MOKOSUITE_CACHE_DESC + Moko\Module\MokoSuiteCache - services + services src tmpl - en-GB/mod_mokowaas_cache.ini - en-GB/mod_mokowaas_cache.sys.ini + en-GB/mod_mokosuite_cache.ini + en-GB/mod_mokosuite_cache.sys.ini diff --git a/source/packages/mod_mokowaas_cache/services/provider.php b/source/packages/mod_mokosuite_cache/services/provider.php similarity index 85% rename from source/packages/mod_mokowaas_cache/services/provider.php rename to source/packages/mod_mokosuite_cache/services/provider.php index cf5c25c4..8f3a8949 100644 --- a/source/packages/mod_mokowaas_cache/services/provider.php +++ b/source/packages/mod_mokosuite_cache/services/provider.php @@ -1,7 +1,7 @@ registerServiceProvider(new ModuleDispatcherFactory('\\Moko\\Module\\MokoWaaSCache')); + $container->registerServiceProvider(new ModuleDispatcherFactory('\\Moko\\Module\\MokoSuiteCache')); $container->registerServiceProvider(new Module()); } }; diff --git a/source/packages/mod_mokowaas_menu/src/Dispatcher/Dispatcher.php b/source/packages/mod_mokosuite_cache/src/Dispatcher/Dispatcher.php similarity index 77% rename from source/packages/mod_mokowaas_menu/src/Dispatcher/Dispatcher.php rename to source/packages/mod_mokosuite_cache/src/Dispatcher/Dispatcher.php index b5d4dcc2..59c40ed1 100644 --- a/source/packages/mod_mokowaas_menu/src/Dispatcher/Dispatcher.php +++ b/source/packages/mod_mokosuite_cache/src/Dispatcher/Dispatcher.php @@ -1,5 +1,5 @@ + + + +
+ Clear: + + Cache + + | + + Temp + +
+ + diff --git a/source/packages/mod_mokosuite_categories/language/en-GB/mod_mokosuite_categories.ini b/source/packages/mod_mokosuite_categories/language/en-GB/mod_mokosuite_categories.ini new file mode 100644 index 00000000..3a6960fb --- /dev/null +++ b/source/packages/mod_mokosuite_categories/language/en-GB/mod_mokosuite_categories.ini @@ -0,0 +1,24 @@ +MOD_MOKOSUITE_CATEGORIES="MokoSuite Categories" +MOD_MOKOSUITE_CATEGORIES_DESC="Auto-discovers article categories and renders them as a collapsible tree menu. Ideal for knowledge base and help sections." + +MOD_MOKOSUITE_CATEGORIES_ROOT_LABEL="Root Category" +MOD_MOKOSUITE_CATEGORIES_ROOT_DESC="Select a parent category. Only its children (and their subcategories) will be displayed. Leave as All to show the entire category tree." +MOD_MOKOSUITE_CATEGORIES_ALL_CATEGORIES="- All Categories -" + +MOD_MOKOSUITE_CATEGORIES_DEPTH_LABEL="Maximum Depth" +MOD_MOKOSUITE_CATEGORIES_DEPTH_DESC="How many levels deep to display. 1 shows only top-level categories, 2 adds one level of subcategories, etc." + +MOD_MOKOSUITE_CATEGORIES_COUNT_LABEL="Show Article Count" +MOD_MOKOSUITE_CATEGORIES_COUNT_DESC="Display the number of published articles next to each category name." + +MOD_MOKOSUITE_CATEGORIES_EMPTY_LABEL="Show Empty Categories" +MOD_MOKOSUITE_CATEGORIES_EMPTY_DESC="Display categories that have no published articles. Only applies when Show Article Count is enabled." + +MOD_MOKOSUITE_CATEGORIES_MENUITEM_LABEL="Target Menu Item" +MOD_MOKOSUITE_CATEGORIES_MENUITEM_DESC="The menu item to use as the base for category links. This sets the Itemid parameter for proper template and menu highlighting." + +MOD_MOKOSUITE_CATEGORIES_ORDER_LABEL="Category Ordering" +MOD_MOKOSUITE_CATEGORIES_ORDER_DESC="How to sort categories within each level." +MOD_MOKOSUITE_CATEGORIES_ORDER_TREE="Tree Order (default)" +MOD_MOKOSUITE_CATEGORIES_ORDER_TITLE="Alphabetical" +MOD_MOKOSUITE_CATEGORIES_ORDER_CREATED="Date Created" diff --git a/source/packages/mod_mokosuite_categories/language/en-GB/mod_mokosuite_categories.sys.ini b/source/packages/mod_mokosuite_categories/language/en-GB/mod_mokosuite_categories.sys.ini new file mode 100644 index 00000000..8a216c01 --- /dev/null +++ b/source/packages/mod_mokosuite_categories/language/en-GB/mod_mokosuite_categories.sys.ini @@ -0,0 +1,2 @@ +MOD_MOKOSUITE_CATEGORIES="MokoSuite Categories" +MOD_MOKOSUITE_CATEGORIES_DESC="Auto-discovers article categories and renders them as a collapsible tree menu. Ideal for knowledge base and help sections." diff --git a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml b/source/packages/mod_mokosuite_categories/mod_mokosuite_categories.xml similarity index 52% rename from source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml rename to source/packages/mod_mokosuite_categories/mod_mokosuite_categories.xml index bb2a46ef..e84a6b51 100644 --- a/source/packages/mod_mokowaas_categories/mod_mokowaas_categories.xml +++ b/source/packages/mod_mokosuite_categories/mod_mokosuite_categories.xml @@ -1,6 +1,6 @@ - mod_mokowaas_categories + mod_mokosuite_categories Moko Consulting 2026-06-06 Copyright (C) 2026 Moko Consulting. All rights reserved. @@ -8,18 +8,18 @@ hello@mokoconsulting.tech https://mokoconsulting.tech 02.34.43-dev - MOD_MOKOWAAS_CATEGORIES_DESC - Moko\Module\MokoWaaSCategories + MOD_MOKOSUITE_CATEGORIES_DESC + Moko\Module\MokoSuiteCategories - services + services src tmpl - en-GB/mod_mokowaas_categories.ini - en-GB/mod_mokowaas_categories.sys.ini + en-GB/mod_mokosuite_categories.ini + en-GB/mod_mokosuite_categories.sys.ini @@ -27,48 +27,48 @@
- + - - - + + +
diff --git a/source/packages/mod_mokowaas_categories/services/provider.php b/source/packages/mod_mokosuite_categories/services/provider.php similarity index 81% rename from source/packages/mod_mokowaas_categories/services/provider.php rename to source/packages/mod_mokosuite_categories/services/provider.php index 0ef768ba..ed3af2c3 100644 --- a/source/packages/mod_mokowaas_categories/services/provider.php +++ b/source/packages/mod_mokosuite_categories/services/provider.php @@ -1,7 +1,7 @@ registerServiceProvider(new ModuleDispatcherFactory('\\Moko\\Module\\MokoWaaSCategories')); - $container->registerServiceProvider(new HelperFactory('\\Moko\\Module\\MokoWaaSCategories\\Administrator\\Helper')); + $container->registerServiceProvider(new ModuleDispatcherFactory('\\Moko\\Module\\MokoSuiteCategories')); + $container->registerServiceProvider(new HelperFactory('\\Moko\\Module\\MokoSuiteCategories\\Administrator\\Helper')); $container->registerServiceProvider(new Module()); } }; diff --git a/source/packages/mod_mokowaas_categories/src/Dispatcher/Dispatcher.php b/source/packages/mod_mokosuite_categories/src/Dispatcher/Dispatcher.php similarity index 84% rename from source/packages/mod_mokowaas_categories/src/Dispatcher/Dispatcher.php rename to source/packages/mod_mokosuite_categories/src/Dispatcher/Dispatcher.php index 07857915..cc09153f 100644 --- a/source/packages/mod_mokowaas_categories/src/Dispatcher/Dispatcher.php +++ b/source/packages/mod_mokosuite_categories/src/Dispatcher/Dispatcher.php @@ -1,12 +1,12 @@ children); $isActive = $isCatView && (int) $cat->id === $activeCatId; $isAncestor = $hasChildren && $isActiveOrAncestor($cat); - $liClass = 'item mokowaas-cat-item mokowaas-cat-level-' . $depth; + $liClass = 'item mokosuite-cat-item mokosuite-cat-level-' . $depth; if ($isActive) { @@ -126,11 +126,11 @@ $renderTree = function (array $categories, int $depth = 1) use ( ?>
- + + contact_id): ?> + + resolved): ?>closed): ?> diff --git a/source/packages/com_mokosuite/admin/tmpl/tickets/default.php b/source/packages/com_mokosuite/admin/tmpl/tickets/default.php index c99d5175..eb479b54 100644 --- a/source/packages/com_mokosuite/admin/tmpl/tickets/default.php +++ b/source/packages/com_mokosuite/admin/tmpl/tickets/default.php @@ -88,6 +88,7 @@ $priorityBadge = [ + @@ -96,7 +97,7 @@ $priorityBadge = [ - + status)); ?> + - +
escape($order->ref); ?>escape($order->ref); ?> status); ?> $total, 2); ?> escape($order->created); ?>
id; ?>subject, 0, 60)); ?>id; ?>subject, 0, 60)); ?> status] ?? $t->status; ?> priority); ?> category_title ?? '—'); ?>
Prioritypriority); ?>
Categoryescape($t->category_title ?? '—'); ?>
Created Byescape($t->created_by_name); ?>
escape($t->created_by_email ?? ''); ?>
Assigned Toescape($t->assigned_to_name ?? 'Unassigned'); ?>
Assigned Toassignees)) { + foreach ($t->assignees as $a) { + $icon = $a->assignee_type === 'group' ? ' ' : ' '; + echo '
' . $icon . $this->escape($a->name) . '
'; + } + } else { + echo 'Unassigned'; + } + ?>
Contact + + escape($t->contact_name ?? 'Contact #' . $t->contact_id); ?> + + contact_email)): ?>
escape($t->contact_email); ?> + contact_phone)): ?>
escape($t->contact_phone); ?> +
Createdcreated, 'M d, Y H:i'); ?>
Resolvedresolved, 'M d, Y H:i'); ?>
Closedclosed, 'M d, Y H:i'); ?>
Status Priority CategoryContact Created By Assigned To Created
No tickets found.
No tickets found.
priority); ?> escape($t->category_title ?? '—'); ?>contact_name ? '' . $this->escape($t->contact_name) . '' : '—'; ?> escape($t->created_by_name ?? ''); ?>assigned_to_name ? $this->escape($t->assigned_to_name) : 'Unassigned'; ?>assignees)) { + $names = []; + foreach ($t->assignees as $a) { + $icon = $a->assignee_type === 'group' ? ' ' : ''; + $names[] = $icon . $this->escape($a->name); + } + echo implode(', ', $names); + } else { + echo 'Unassigned'; + } + ?> created, 'M d H:i'); ?> sla_response_due && !$t->sla_responded): ?> @@ -157,7 +170,7 @@ $priorityBadge = [
-
+
-
+
+
+ + +
From b2b9ab43445532162500d923925ceade29d13981 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sun, 7 Jun 2026 10:18:33 -0500 Subject: [PATCH 66/73] feat: customizable statuses/priorities, custom fields, and field groups per category Replace hardcoded ENUM status/priority with lookup tables (#__mokosuite_ticket_statuses, #__mokosuite_ticket_priorities) so admins can add custom values with colors and ordering. Integrate Joomla's native custom fields (com_mokosuite.ticket context) with a junction table linking field groups to ticket categories. Includes migration SQL to populate new columns from existing ENUM data. --- .../com_mokosuite/admin/sql/install.mysql.sql | 48 ++++ .../admin/sql/updates/mysql/02.35.01.sql | 65 +++++ .../admin/src/Model/TicketsModel.php | 232 ++++++++++++++++-- .../admin/src/View/Ticket/HtmlView.php | 15 ++ .../admin/src/View/Tickets/HtmlView.php | 8 +- .../admin/tmpl/ticket/default.php | 40 +-- .../admin/tmpl/tickets/default.php | 38 +-- 7 files changed, 385 insertions(+), 61 deletions(-) diff --git a/source/packages/com_mokosuite/admin/sql/install.mysql.sql b/source/packages/com_mokosuite/admin/sql/install.mysql.sql index 6096ec40..367b0d30 100644 --- a/source/packages/com_mokosuite/admin/sql/install.mysql.sql +++ b/source/packages/com_mokosuite/admin/sql/install.mysql.sql @@ -16,12 +16,51 @@ CREATE TABLE IF NOT EXISTS `#__mokosuite_ticket_categories` ( KEY `idx_alias` (`alias`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +CREATE TABLE IF NOT EXISTS `#__mokosuite_ticket_statuses` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `title` VARCHAR(100) NOT NULL, + `alias` VARCHAR(100) NOT NULL, + `color` VARCHAR(30) NOT NULL DEFAULT 'bg-secondary', + `is_default` TINYINT NOT NULL DEFAULT 0, + `is_closed` TINYINT NOT NULL DEFAULT 0, + `ordering` INT NOT NULL DEFAULT 0, + PRIMARY KEY (`id`), + UNIQUE KEY `idx_alias` (`alias`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +INSERT IGNORE INTO `#__mokosuite_ticket_statuses` (`id`, `title`, `alias`, `color`, `is_default`, `is_closed`, `ordering`) VALUES +(1, 'Open', 'open', 'bg-primary', 1, 0, 1), +(2, 'In Progress', 'in_progress', 'bg-info', 0, 0, 2), +(3, 'Waiting', 'waiting', 'bg-warning text-dark', 0, 0, 3), +(4, 'Resolved', 'resolved', 'bg-success', 0, 0, 4), +(5, 'Closed', 'closed', 'bg-secondary', 0, 1, 5); + +CREATE TABLE IF NOT EXISTS `#__mokosuite_ticket_priorities` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `title` VARCHAR(100) NOT NULL, + `alias` VARCHAR(100) NOT NULL, + `color` VARCHAR(30) NOT NULL DEFAULT 'bg-secondary', + `is_default` TINYINT NOT NULL DEFAULT 0, + `weight` INT NOT NULL DEFAULT 0, + `ordering` INT NOT NULL DEFAULT 0, + PRIMARY KEY (`id`), + UNIQUE KEY `idx_alias` (`alias`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +INSERT IGNORE INTO `#__mokosuite_ticket_priorities` (`id`, `title`, `alias`, `color`, `is_default`, `weight`, `ordering`) VALUES +(1, 'Low', 'low', 'bg-secondary', 0, 10, 1), +(2, 'Normal', 'normal', 'bg-primary', 1, 20, 2), +(3, 'High', 'high', 'bg-warning text-dark', 0, 30, 3), +(4, 'Urgent', 'urgent', 'bg-danger', 0, 40, 4); + CREATE TABLE IF NOT EXISTS `#__mokosuite_tickets` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `subject` VARCHAR(512) NOT NULL, `body` TEXT NOT NULL, `status` ENUM('open','in_progress','waiting','resolved','closed') NOT NULL DEFAULT 'open', + `status_id` INT UNSIGNED DEFAULT NULL, `priority` ENUM('low','normal','high','urgent') NOT NULL DEFAULT 'normal', + `priority_id` INT UNSIGNED DEFAULT NULL, `category_id` INT UNSIGNED DEFAULT NULL, `contact_id` INT UNSIGNED DEFAULT NULL, `created_by` INT NOT NULL DEFAULT 0, @@ -35,13 +74,22 @@ CREATE TABLE IF NOT EXISTS `#__mokosuite_tickets` ( `sla_responded` TINYINT NOT NULL DEFAULT 0, PRIMARY KEY (`id`), KEY `idx_status` (`status`), + KEY `idx_status_id` (`status_id`), KEY `idx_priority` (`priority`), + KEY `idx_priority_id` (`priority_id`), KEY `idx_assigned` (`assigned_to`), KEY `idx_category` (`category_id`), KEY `idx_contact` (`contact_id`), KEY `idx_created` (`created`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; +CREATE TABLE IF NOT EXISTS `#__mokosuite_ticket_category_field_groups` ( + `category_id` INT UNSIGNED NOT NULL, + `field_group_id` INT NOT NULL, + PRIMARY KEY (`category_id`, `field_group_id`), + KEY `idx_field_group` (`field_group_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + CREATE TABLE IF NOT EXISTS `#__mokosuite_ticket_replies` ( `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, `ticket_id` INT UNSIGNED NOT NULL, diff --git a/source/packages/com_mokosuite/admin/sql/updates/mysql/02.35.01.sql b/source/packages/com_mokosuite/admin/sql/updates/mysql/02.35.01.sql index 286e0714..f07c12ff 100644 --- a/source/packages/com_mokosuite/admin/sql/updates/mysql/02.35.01.sql +++ b/source/packages/com_mokosuite/admin/sql/updates/mysql/02.35.01.sql @@ -18,3 +18,68 @@ CREATE TABLE IF NOT EXISTS `#__mokosuite_ticket_assignees` ( -- Migrate existing single-assignee data to junction table INSERT IGNORE INTO `#__mokosuite_ticket_assignees` (`ticket_id`, `assignee_type`, `assignee_id`) SELECT `id`, 'user', `assigned_to` FROM `#__mokosuite_tickets` WHERE `assigned_to` IS NOT NULL AND `assigned_to` > 0; + +-- Customizable ticket statuses (replaces ENUM) +CREATE TABLE IF NOT EXISTS `#__mokosuite_ticket_statuses` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `title` VARCHAR(100) NOT NULL, + `alias` VARCHAR(100) NOT NULL, + `color` VARCHAR(30) NOT NULL DEFAULT 'bg-secondary', + `is_default` TINYINT NOT NULL DEFAULT 0, + `is_closed` TINYINT NOT NULL DEFAULT 0, + `ordering` INT NOT NULL DEFAULT 0, + PRIMARY KEY (`id`), + UNIQUE KEY `idx_alias` (`alias`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +INSERT IGNORE INTO `#__mokosuite_ticket_statuses` (`id`, `title`, `alias`, `color`, `is_default`, `is_closed`, `ordering`) VALUES +(1, 'Open', 'open', 'bg-primary', 1, 0, 1), +(2, 'In Progress', 'in_progress', 'bg-info', 0, 0, 2), +(3, 'Waiting', 'waiting', 'bg-warning text-dark', 0, 0, 3), +(4, 'Resolved', 'resolved', 'bg-success', 0, 0, 4), +(5, 'Closed', 'closed', 'bg-secondary', 0, 1, 5); + +-- Customizable ticket priorities (replaces ENUM) +CREATE TABLE IF NOT EXISTS `#__mokosuite_ticket_priorities` ( + `id` INT UNSIGNED NOT NULL AUTO_INCREMENT, + `title` VARCHAR(100) NOT NULL, + `alias` VARCHAR(100) NOT NULL, + `color` VARCHAR(30) NOT NULL DEFAULT 'bg-secondary', + `is_default` TINYINT NOT NULL DEFAULT 0, + `weight` INT NOT NULL DEFAULT 0, + `ordering` INT NOT NULL DEFAULT 0, + PRIMARY KEY (`id`), + UNIQUE KEY `idx_alias` (`alias`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +INSERT IGNORE INTO `#__mokosuite_ticket_priorities` (`id`, `title`, `alias`, `color`, `is_default`, `weight`, `ordering`) VALUES +(1, 'Low', 'low', 'bg-secondary', 0, 10, 1), +(2, 'Normal', 'normal', 'bg-primary', 1, 20, 2), +(3, 'High', 'high', 'bg-warning text-dark', 0, 30, 3), +(4, 'Urgent', 'urgent', 'bg-danger', 0, 40, 4); + +-- Add INT FK columns for status/priority (coexist with ENUM during migration) +ALTER TABLE `#__mokosuite_tickets` + ADD COLUMN `status_id` INT UNSIGNED DEFAULT NULL AFTER `status`, + ADD COLUMN `priority_id` INT UNSIGNED DEFAULT NULL AFTER `priority`, + ADD KEY `idx_status_id` (`status_id`), + ADD KEY `idx_priority_id` (`priority_id`); + +-- Populate new columns from existing ENUM values +UPDATE `#__mokosuite_tickets` t + JOIN `#__mokosuite_ticket_statuses` s ON s.alias = t.status + SET t.status_id = s.id + WHERE t.status_id IS NULL; + +UPDATE `#__mokosuite_tickets` t + JOIN `#__mokosuite_ticket_priorities` p ON p.alias = t.priority + SET t.priority_id = p.id + WHERE t.priority_id IS NULL; + +-- Junction: which Joomla field groups apply to which ticket categories +CREATE TABLE IF NOT EXISTS `#__mokosuite_ticket_category_field_groups` ( + `category_id` INT UNSIGNED NOT NULL, + `field_group_id` INT NOT NULL, + PRIMARY KEY (`category_id`, `field_group_id`), + KEY `idx_field_group` (`field_group_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; diff --git a/source/packages/com_mokosuite/admin/src/Model/TicketsModel.php b/source/packages/com_mokosuite/admin/src/Model/TicketsModel.php index 351a25b5..476b94fd 100644 --- a/source/packages/com_mokosuite/admin/src/Model/TicketsModel.php +++ b/source/packages/com_mokosuite/admin/src/Model/TicketsModel.php @@ -26,8 +26,8 @@ class TicketsModel extends BaseDatabaseModel ->select([ $db->quoteName('t.id'), $db->quoteName('t.subject'), - $db->quoteName('t.status'), - $db->quoteName('t.priority'), + $db->quoteName('t.status_id'), + $db->quoteName('t.priority_id'), $db->quoteName('t.created'), $db->quoteName('t.modified'), $db->quoteName('t.contact_id'), @@ -37,20 +37,28 @@ class TicketsModel extends BaseDatabaseModel $db->quoteName('c.title', 'category_title'), $db->quoteName('u.name', 'created_by_name'), $db->quoteName('ct.name', 'contact_name'), + $db->quoteName('st.title', 'status_title'), + $db->quoteName('st.alias', 'status_alias'), + $db->quoteName('st.color', 'status_color'), + $db->quoteName('pr.title', 'priority_title'), + $db->quoteName('pr.alias', 'priority_alias'), + $db->quoteName('pr.color', 'priority_color'), ]) ->from($db->quoteName('#__mokosuite_tickets', 't')) ->leftJoin($db->quoteName('#__mokosuite_ticket_categories', 'c') . ' ON c.id = t.category_id') ->leftJoin($db->quoteName('#__users', 'u') . ' ON u.id = t.created_by') - ->leftJoin($db->quoteName('#__contact_details', 'ct') . ' ON ct.id = t.contact_id'); + ->leftJoin($db->quoteName('#__contact_details', 'ct') . ' ON ct.id = t.contact_id') + ->leftJoin($db->quoteName('#__mokosuite_ticket_statuses', 'st') . ' ON st.id = t.status_id') + ->leftJoin($db->quoteName('#__mokosuite_ticket_priorities', 'pr') . ' ON pr.id = t.priority_id'); - if (!empty($filters['status'])) + if (!empty($filters['status_id'])) { - $query->where($db->quoteName('t.status') . ' = ' . $db->quote($filters['status'])); + $query->where($db->quoteName('t.status_id') . ' = ' . (int) $filters['status_id']); } - if (!empty($filters['priority'])) + if (!empty($filters['priority_id'])) { - $query->where($db->quoteName('t.priority') . ' = ' . $db->quote($filters['priority'])); + $query->where($db->quoteName('t.priority_id') . ' = ' . (int) $filters['priority_id']); } if (!empty($filters['assigned_to'])) @@ -95,16 +103,23 @@ class TicketsModel extends BaseDatabaseModel $db->quoteName('c.title', 'category_title'), $db->quoteName('u.name', 'created_by_name'), $db->quoteName('u.email', 'created_by_email'), - $db->quoteName('a.name', 'assigned_to_name'), $db->quoteName('ct.name', 'contact_name'), $db->quoteName('ct.email_to', 'contact_email'), $db->quoteName('ct.telephone', 'contact_phone'), + $db->quoteName('st.title', 'status_title'), + $db->quoteName('st.alias', 'status_alias'), + $db->quoteName('st.color', 'status_color'), + $db->quoteName('st.is_closed', 'status_is_closed'), + $db->quoteName('pr.title', 'priority_title'), + $db->quoteName('pr.alias', 'priority_alias'), + $db->quoteName('pr.color', 'priority_color'), ]) ->from($db->quoteName('#__mokosuite_tickets', 't')) ->leftJoin($db->quoteName('#__mokosuite_ticket_categories', 'c') . ' ON c.id = t.category_id') ->leftJoin($db->quoteName('#__users', 'u') . ' ON u.id = t.created_by') - ->leftJoin($db->quoteName('#__users', 'a') . ' ON a.id = t.assigned_to') ->leftJoin($db->quoteName('#__contact_details', 'ct') . ' ON ct.id = t.contact_id') + ->leftJoin($db->quoteName('#__mokosuite_ticket_statuses', 'st') . ' ON st.id = t.status_id') + ->leftJoin($db->quoteName('#__mokosuite_ticket_priorities', 'pr') . ' ON pr.id = t.priority_id') ->where($db->quoteName('t.id') . ' = ' . $id); $db->setQuery($query); $ticket = $db->loadObject(); @@ -147,17 +162,23 @@ class TicketsModel extends BaseDatabaseModel $user = Factory::getApplication()->getIdentity(); $now = Factory::getDate()->toSql(); + // Resolve default status/priority from lookup tables + $defaultStatus = $this->getDefaultStatus(); + $defaultPriority = $this->getDefaultPriority(); + $ticket = (object) [ - 'subject' => $data['subject'] ?? '', - 'body' => $data['body'] ?? '', - 'status' => 'open', - 'priority' => $data['priority'] ?? 'normal', - 'category_id' => (int) ($data['category_id'] ?? 0) ?: null, - 'contact_id' => (int) ($data['contact_id'] ?? 0) ?: null, - 'created_by' => $user->id, - 'assigned_to' => (int) ($data['assigned_to'] ?? 0) ?: null, - 'created' => $now, - 'modified' => $now, + 'subject' => $data['subject'] ?? '', + 'body' => $data['body'] ?? '', + 'status' => $defaultStatus->alias ?? 'open', + 'status_id' => (int) ($data['status_id'] ?? $defaultStatus->id ?? 1), + 'priority' => $defaultPriority->alias ?? 'normal', + 'priority_id' => (int) ($data['priority_id'] ?? $defaultPriority->id ?? 2), + 'category_id' => (int) ($data['category_id'] ?? 0) ?: null, + 'contact_id' => (int) ($data['contact_id'] ?? 0) ?: null, + 'created_by' => $user->id, + 'assigned_to' => (int) ($data['assigned_to'] ?? 0) ?: null, + 'created' => $now, + 'modified' => $now, ]; // Auto-assign from category @@ -210,6 +231,14 @@ class TicketsModel extends BaseDatabaseModel $this->setTicketAssignees((int) $ticket->id, $assignUsers, $assignGroups); } + // Save custom field values + $fieldValues = (array) ($data['custom_fields'] ?? []); + + if (!empty($fieldValues)) + { + $this->saveFieldValues((int) $ticket->id, $fieldValues); + } + // Run automation + notifications $this->runAutomation('ticket_created', (int) $ticket->id); NotificationService::notify('ticket_created', $this->getTicket((int) $ticket->id)); @@ -460,6 +489,171 @@ class TicketsModel extends BaseDatabaseModel return $db->loadObjectList() ?: []; } + /** + * Get the default ticket status. + */ + public function getDefaultStatus(): ?object + { + $db = $this->getDatabase(); + $db->setQuery( + $db->getQuery(true) + ->select('*') + ->from($db->quoteName('#__mokosuite_ticket_statuses')) + ->where($db->quoteName('is_default') . ' = 1') + ->setLimit(1) + ); + + return $db->loadObject() ?: null; + } + + /** + * Get the default ticket priority. + */ + public function getDefaultPriority(): ?object + { + $db = $this->getDatabase(); + $db->setQuery( + $db->getQuery(true) + ->select('*') + ->from($db->quoteName('#__mokosuite_ticket_priorities')) + ->where($db->quoteName('is_default') . ' = 1') + ->setLimit(1) + ); + + return $db->loadObject() ?: null; + } + + /** + * Get all ticket statuses. + */ + public function getStatuses(): array + { + $db = $this->getDatabase(); + $db->setQuery( + $db->getQuery(true) + ->select('*') + ->from($db->quoteName('#__mokosuite_ticket_statuses')) + ->order($db->quoteName('ordering') . ' ASC') + ); + + return $db->loadObjectList() ?: []; + } + + /** + * Get all ticket priorities. + */ + public function getPriorities(): array + { + $db = $this->getDatabase(); + $db->setQuery( + $db->getQuery(true) + ->select('*') + ->from($db->quoteName('#__mokosuite_ticket_priorities')) + ->order($db->quoteName('ordering') . ' ASC') + ); + + return $db->loadObjectList() ?: []; + } + + /** + * Get Joomla custom field groups assigned to a ticket category. + */ + public function getFieldGroupsForCategory(int $categoryId): array + { + $db = $this->getDatabase(); + $db->setQuery( + $db->getQuery(true) + ->select([$db->quoteName('fg.id'), $db->quoteName('fg.title')]) + ->from($db->quoteName('#__mokosuite_ticket_category_field_groups', 'cfg')) + ->innerJoin($db->quoteName('#__fields_groups', 'fg') . ' ON fg.id = cfg.field_group_id') + ->where($db->quoteName('cfg.category_id') . ' = ' . $categoryId) + ->where($db->quoteName('fg.state') . ' = 1') + ->order($db->quoteName('fg.ordering') . ' ASC') + ); + + return $db->loadObjectList() ?: []; + } + + /** + * Get Joomla custom fields for given field group IDs (context: com_mokosuite.ticket). + */ + public function getFieldsForGroups(array $groupIds): array + { + if (empty($groupIds)) + { + return []; + } + + $db = $this->getDatabase(); + $ids = implode(',', array_map('intval', $groupIds)); + $db->setQuery( + $db->getQuery(true) + ->select('*') + ->from($db->quoteName('#__fields')) + ->where($db->quoteName('context') . ' = ' . $db->quote('com_mokosuite.ticket')) + ->where($db->quoteName('group_id') . ' IN (' . $ids . ')') + ->where($db->quoteName('state') . ' = 1') + ->order($db->quoteName('ordering') . ' ASC') + ); + + return $db->loadObjectList() ?: []; + } + + /** + * Get custom field values for a ticket. + */ + public function getFieldValues(int $ticketId): array + { + $db = $this->getDatabase(); + $db->setQuery( + $db->getQuery(true) + ->select([$db->quoteName('field_id'), $db->quoteName('value')]) + ->from($db->quoteName('#__fields_values')) + ->where($db->quoteName('item_id') . ' = ' . $db->quote((string) $ticketId)) + ); + $rows = $db->loadObjectList() ?: []; + + $values = []; + + foreach ($rows as $row) + { + $values[(int) $row->field_id] = $row->value; + } + + return $values; + } + + /** + * Save custom field values for a ticket. + */ + public function saveFieldValues(int $ticketId, array $fieldValues): void + { + $db = $this->getDatabase(); + + foreach ($fieldValues as $fieldId => $value) + { + $fieldId = (int) $fieldId; + + // Delete existing + $db->setQuery( + $db->getQuery(true) + ->delete($db->quoteName('#__fields_values')) + ->where($db->quoteName('field_id') . ' = ' . $fieldId) + ->where($db->quoteName('item_id') . ' = ' . $db->quote((string) $ticketId)) + )->execute(); + + // Insert new value (skip empty) + if ($value !== '' && $value !== null) + { + $db->insertObject('#__fields_values', (object) [ + 'field_id' => $fieldId, + 'item_id' => (string) $ticketId, + 'value' => $value, + ]); + } + } + } + /** * Get canned responses, optionally filtered by category. */ diff --git a/source/packages/com_mokosuite/admin/src/View/Ticket/HtmlView.php b/source/packages/com_mokosuite/admin/src/View/Ticket/HtmlView.php index 111b08cc..78915e33 100644 --- a/source/packages/com_mokosuite/admin/src/View/Ticket/HtmlView.php +++ b/source/packages/com_mokosuite/admin/src/View/Ticket/HtmlView.php @@ -19,6 +19,10 @@ class HtmlView extends BaseHtmlView { protected $ticket; protected $cannedResponses = []; + protected $statuses = []; + protected $priorities = []; + protected $customFields = []; + protected $fieldValues = []; public function display($tpl = null) { @@ -27,6 +31,17 @@ class HtmlView extends BaseHtmlView $this->ticket = $model->getTicket($id); $this->cannedResponses = $model->getCannedResponses((int) ($this->ticket->category_id ?? 0)); + $this->statuses = $model->getStatuses(); + $this->priorities = $model->getPriorities(); + + // Load custom fields for this ticket's category + if ($this->ticket && $this->ticket->category_id) + { + $groups = $model->getFieldGroupsForCategory((int) $this->ticket->category_id); + $groupIds = array_column($groups, 'id'); + $this->customFields = $model->getFieldsForGroups($groupIds); + $this->fieldValues = $model->getFieldValues($id); + } if (!$this->ticket) { diff --git a/source/packages/com_mokosuite/admin/src/View/Tickets/HtmlView.php b/source/packages/com_mokosuite/admin/src/View/Tickets/HtmlView.php index e52b415b..77e4e719 100644 --- a/source/packages/com_mokosuite/admin/src/View/Tickets/HtmlView.php +++ b/source/packages/com_mokosuite/admin/src/View/Tickets/HtmlView.php @@ -23,6 +23,8 @@ class HtmlView extends BaseHtmlView protected $overdue = []; protected $atsAvailable = null; protected $contacts = []; + protected $statuses = []; + protected $priorities = []; public function display($tpl = null) { @@ -30,14 +32,16 @@ class HtmlView extends BaseHtmlView $app = Factory::getApplication(); $filters = [ - 'status' => $app->getInput()->getString('filter_status', ''), - 'priority' => $app->getInput()->getString('filter_priority', ''), + 'status_id' => $app->getInput()->getInt('filter_status', 0), + 'priority_id' => $app->getInput()->getInt('filter_priority', 0), 'category_id' => $app->getInput()->getInt('filter_category', 0), 'contact_id' => $app->getInput()->getInt('filter_contact', 0), ]; $this->tickets = $model->getTickets($filters); $this->categories = $model->getCategories(); + $this->statuses = $model->getStatuses(); + $this->priorities = $model->getPriorities(); $this->statusCounts = $model->getStatusCounts(); $this->overdue = $model->getOverdueTickets(); $this->atsAvailable = $model->checkAtsAvailable(); diff --git a/source/packages/com_mokosuite/admin/tmpl/ticket/default.php b/source/packages/com_mokosuite/admin/tmpl/ticket/default.php index 3a303062..4c5a462b 100644 --- a/source/packages/com_mokosuite/admin/tmpl/ticket/default.php +++ b/source/packages/com_mokosuite/admin/tmpl/ticket/default.php @@ -9,13 +9,8 @@ $t = $this->ticket; $canned = $this->cannedResponses; $token = Session::getFormToken(); -$statusBadge = [ - 'open' => 'bg-primary', 'in_progress' => 'bg-info', - 'waiting' => 'bg-warning text-dark', 'resolved' => 'bg-success', 'closed' => 'bg-secondary', -]; -$priorityBadge = [ - 'low' => 'bg-secondary', 'normal' => 'bg-primary', 'high' => 'bg-warning text-dark', 'urgent' => 'bg-danger', -]; +$statuses = $this->statuses ?? []; +$priorities = $this->priorities ?? []; ?>
@@ -86,8 +81,8 @@ $priorityBadge = [
Details
- - + + - - + + @@ -181,11 +168,10 @@ $priorityBadge = [
- + + +
From b8c03dfa736aaa8989e9e349b59bcedb554097f8 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sun, 7 Jun 2026 16:09:12 +0000 Subject: [PATCH 67/73] chore(version): pre-release bump to 02.34.44-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokosuite/mokosuite.xml | 2 +- source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml | 2 +- .../mod_mokosuite_categories/mod_mokosuite_categories.xml | 2 +- source/packages/mod_mokosuite_cpanel/mod_mokosuite_cpanel.xml | 2 +- source/packages/mod_mokosuite_menu/mod_mokosuite_menu.xml | 2 +- source/packages/plg_system_mokosuite/Extension/MokoSuite.php | 2 +- .../plg_system_mokosuite/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokosuite/mokosuite.xml | 2 +- source/packages/plg_system_mokosuite/script.php | 2 +- source/packages/plg_system_mokosuite/services/provider.php | 2 +- .../plg_system_mokosuite_devtools/mokosuite_devtools.xml | 2 +- .../plg_system_mokosuite_firewall/mokosuite_firewall.xml | 2 +- .../plg_system_mokosuite_license/mokosuite_license.xml | 2 +- .../plg_system_mokosuite_monitor/mokosuite_monitor.xml | 2 +- .../plg_system_mokosuite_offline/mokosuite_offline.xml | 2 +- .../packages/plg_system_mokosuite_tenant/mokosuite_tenant.xml | 2 +- .../packages/plg_task_mokosuite_tickets/mokosuite_tickets.xml | 2 +- source/packages/plg_task_mokosuitedemo/mokosuitedemo.xml | 2 +- .../plg_task_mokosuitedemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokosuitesync/mokosuitesync.xml | 2 +- .../src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokosuitesync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokosuite/mokosuite.xml | 2 +- source/pkg_mokosuite.xml | 2 +- 43 files changed, 53 insertions(+), 53 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 371ceb40..68cd3c55 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoSuite MokoConsulting White-label identity, security hardening, and tenant restriction layer for Suite-managed Joomla environments - 02.34.43 + 02.34.44 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index f7e73dfa..ee38422a 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.43 +# VERSION: 02.34.44 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 3571901b..3fae9ea9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoSuite.Documentation REPO: https://github.com/mokoconsulting-tech/mokosuite PATH: ./CHANGELOG.md - VERSION: 02.34.43 + VERSION: 02.34.44 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 0661fc89..3b97c2ce 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Documentation REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.43 + VERSION: 02.34.44 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index cc64473c..455388a8 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoSuiteBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoSuiteBrand - VERSION: 02.34.43 + VERSION: 02.34.44 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoSuiteBrand --> diff --git a/LICENSE.md b/LICENSE.md index 291947ed..f10c343b 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoSuite.Documentation REPO: https://github.com/mokoconsulting-tech/mokosuite PATH: ./LICENSE.md - VERSION: 02.34.43 + VERSION: 02.34.44 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index 9cfef49d..5d2135dc 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoSuite - VERSION: 02.34.43 + VERSION: 02.34.44 PATH: /README.md BRIEF: MokoSuite platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index ba241df1..5aa7f676 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.43 +VERSION: 02.34.44 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index c1412006..d12c9df9 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoSuite.Build REPO: https://github.com/mokoconsulting-tech/mokosuite FILE: build-guide.md - VERSION: 02.34.43 + VERSION: 02.34.44 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoSuite system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoSuite Build Guide (VERSION: 02.34.43) +# MokoSuite Build Guide (VERSION: 02.34.44) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index 83825749..111b748d 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.43 + VERSION: 02.34.44 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoSuite system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoSuite Configuration Guide (VERSION: 02.34.43) +# MokoSuite Configuration Guide (VERSION: 02.34.44) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index 7b1990e6..c0331aad 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.43 + VERSION: 02.34.44 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoSuite system plugin NOTE: First document in the guide set --> -# MokoSuite Installation Guide (VERSION: 02.34.43) +# MokoSuite Installation Guide (VERSION: 02.34.44) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index 9753044b..2e8ef995 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.43 + VERSION: 02.34.44 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoSuite system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoSuite Operations Guide (VERSION: 02.34.43) +# MokoSuite Operations Guide (VERSION: 02.34.44) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index c5c68eac..adf6ac61 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.43 + VERSION: 02.34.44 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for Suite plugin governance --> -# MokoSuite Rollback and Recovery Guide (VERSION: 02.34.43) +# MokoSuite Rollback and Recovery Guide (VERSION: 02.34.44) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index e2f1ab23..a87c6e85 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.43 + VERSION: 02.34.44 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoSuite v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoSuite Testing Guide (VERSION: 02.34.43) +# MokoSuite Testing Guide (VERSION: 02.34.44) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index 41c70d85..b6be2c6e 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.43 + VERSION: 02.34.44 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoSuite plugin NOTE: Designed for administrators and Suite operations teams --> -# MokoSuite Troubleshooting Guide (VERSION: 02.34.43) +# MokoSuite Troubleshooting Guide (VERSION: 02.34.44) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index 5183ff13..e10fb312 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.43 + VERSION: 02.34.44 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoSuite plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoSuite Upgrade and Versioning Guide (VERSION: 02.34.43) +# MokoSuite Upgrade and Versioning Guide (VERSION: 02.34.44) ## Introduction diff --git a/docs/index.md b/docs/index.md index a593aa22..214798c7 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Documentation REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.43 + VERSION: 02.34.44 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoSuite plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoSuite Documentation Index (VERSION: 02.34.43) +# MokoSuite Documentation Index (VERSION: 02.34.44) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index f9829940..9a810676 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoSuite REPO: https://github.com/mokoconsulting-tech/mokosuite PATH: /docs/plugin-basic.md - VERSION: 02.34.43 + VERSION: 02.34.44 BRIEF: Baseline documentation for the MokoSuite system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoSuite Plugin Overview (VERSION: 02.34.43) +# MokoSuite Plugin Overview (VERSION: 02.34.44) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index 91a658eb..33fffd92 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoSuite.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoSuite PATH: /docs/update-server.md -VERSION: 02.34.43 +VERSION: 02.34.44 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokosuite/mokosuite.xml b/source/packages/com_mokosuite/mokosuite.xml index c8b105a6..cbe4f0e0 100644 --- a/source/packages/com_mokosuite/mokosuite.xml +++ b/source/packages/com_mokosuite/mokosuite.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.43-dev + 02.34.44-dev MokoSuite admin dashboard and REST API. Provides a control panel for managing MokoSuite feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoSuite diff --git a/source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml b/source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml index 06a8a97d..36e88e4c 100644 --- a/source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml +++ b/source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.43-dev + 02.34.44-dev MOD_MOKOSUITE_CACHE_DESC Moko\Module\MokoSuiteCache diff --git a/source/packages/mod_mokosuite_categories/mod_mokosuite_categories.xml b/source/packages/mod_mokosuite_categories/mod_mokosuite_categories.xml index e84a6b51..b085ff7f 100644 --- a/source/packages/mod_mokosuite_categories/mod_mokosuite_categories.xml +++ b/source/packages/mod_mokosuite_categories/mod_mokosuite_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.43-dev + 02.34.44-dev MOD_MOKOSUITE_CATEGORIES_DESC Moko\Module\MokoSuiteCategories diff --git a/source/packages/mod_mokosuite_cpanel/mod_mokosuite_cpanel.xml b/source/packages/mod_mokosuite_cpanel/mod_mokosuite_cpanel.xml index c36ea385..db46b1bf 100644 --- a/source/packages/mod_mokosuite_cpanel/mod_mokosuite_cpanel.xml +++ b/source/packages/mod_mokosuite_cpanel/mod_mokosuite_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.43-dev + 02.34.44-dev MOD_MOKOSUITE_CPANEL_DESC Moko\Module\MokoSuiteCpanel diff --git a/source/packages/mod_mokosuite_menu/mod_mokosuite_menu.xml b/source/packages/mod_mokosuite_menu/mod_mokosuite_menu.xml index 3aa17b7e..b16522f4 100644 --- a/source/packages/mod_mokosuite_menu/mod_mokosuite_menu.xml +++ b/source/packages/mod_mokosuite_menu/mod_mokosuite_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.43-dev + 02.34.44-dev MokoSuite admin sidebar menu — renders a dedicated MokoSuite section in the admin menu before Joomla's default menu. Moko\Module\MokoSuiteMenu diff --git a/source/packages/plg_system_mokosuite/Extension/MokoSuite.php b/source/packages/plg_system_mokosuite/Extension/MokoSuite.php index e3e64aa1..63a3a3bf 100644 --- a/source/packages/plg_system_mokosuite/Extension/MokoSuite.php +++ b/source/packages/plg_system_mokosuite/Extension/MokoSuite.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoSuite * REPO: https://github.com/mokoconsulting-tech/mokosuite - * VERSION: 02.34.43 + * VERSION: 02.34.44 * PATH: /src/Extension/MokoSuite.php * NOTE: Core system plugin for MokoSuite admin tools suite */ diff --git a/source/packages/plg_system_mokosuite/Field/CopyableTokenField.php b/source/packages/plg_system_mokosuite/Field/CopyableTokenField.php index 736d8211..2f73c23f 100644 --- a/source/packages/plg_system_mokosuite/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokosuite/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoSuite - * VERSION: 02.34.43 + * VERSION: 02.34.44 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokosuite/mokosuite.xml b/source/packages/plg_system_mokosuite/mokosuite.xml index 932cd5ef..39ceefe7 100644 --- a/source/packages/plg_system_mokosuite/mokosuite.xml +++ b/source/packages/plg_system_mokosuite/mokosuite.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.43-dev + 02.34.44-dev MokoSuite core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoSuite script.php diff --git a/source/packages/plg_system_mokosuite/script.php b/source/packages/plg_system_mokosuite/script.php index d70d34bb..69d33666 100644 --- a/source/packages/plg_system_mokosuite/script.php +++ b/source/packages/plg_system_mokosuite/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoSuite * REPO: https://github.com/mokoconsulting-tech/mokosuite - * VERSION: 02.34.43 + * VERSION: 02.34.44 * PATH: /src/script.php * BRIEF: Installation script for MokoSuite plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokosuite/services/provider.php b/source/packages/plg_system_mokosuite/services/provider.php index 8ecf47f3..67672b8d 100644 --- a/source/packages/plg_system_mokosuite/services/provider.php +++ b/source/packages/plg_system_mokosuite/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoSuite * REPO: https://github.com/mokoconsulting-tech/mokosuite - * VERSION: 02.34.43 + * VERSION: 02.34.44 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokosuite_devtools/mokosuite_devtools.xml b/source/packages/plg_system_mokosuite_devtools/mokosuite_devtools.xml index cabbb93f..90142cf1 100644 --- a/source/packages/plg_system_mokosuite_devtools/mokosuite_devtools.xml +++ b/source/packages/plg_system_mokosuite_devtools/mokosuite_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.43-dev + 02.34.44-dev PLG_SYSTEM_MOKOSUITE_DEVTOOLS_DESC Moko\Plugin\System\MokoSuiteDevTools diff --git a/source/packages/plg_system_mokosuite_firewall/mokosuite_firewall.xml b/source/packages/plg_system_mokosuite_firewall/mokosuite_firewall.xml index eee9653e..f56367dd 100644 --- a/source/packages/plg_system_mokosuite_firewall/mokosuite_firewall.xml +++ b/source/packages/plg_system_mokosuite_firewall/mokosuite_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.43-dev + 02.34.44-dev PLG_SYSTEM_MOKOSUITE_FIREWALL_DESC Moko\Plugin\System\MokoSuiteFirewall diff --git a/source/packages/plg_system_mokosuite_license/mokosuite_license.xml b/source/packages/plg_system_mokosuite_license/mokosuite_license.xml index c73f2ae3..30c897f8 100644 --- a/source/packages/plg_system_mokosuite_license/mokosuite_license.xml +++ b/source/packages/plg_system_mokosuite_license/mokosuite_license.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.17 + 02.34.44-dev PLG_SYSTEM_MOKOSUITE_LICENSE_DESC Moko\Plugin\System\MokoSuiteLicense srcserviceslanguage diff --git a/source/packages/plg_system_mokosuite_monitor/mokosuite_monitor.xml b/source/packages/plg_system_mokosuite_monitor/mokosuite_monitor.xml index d960bb41..db96638c 100644 --- a/source/packages/plg_system_mokosuite_monitor/mokosuite_monitor.xml +++ b/source/packages/plg_system_mokosuite_monitor/mokosuite_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.43-dev + 02.34.44-dev PLG_SYSTEM_MOKOSUITE_MONITOR_DESC Moko\Plugin\System\MokoSuiteMonitor diff --git a/source/packages/plg_system_mokosuite_offline/mokosuite_offline.xml b/source/packages/plg_system_mokosuite_offline/mokosuite_offline.xml index a4d87ade..1205f7cf 100644 --- a/source/packages/plg_system_mokosuite_offline/mokosuite_offline.xml +++ b/source/packages/plg_system_mokosuite_offline/mokosuite_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.43-dev + 02.34.44-dev PLG_SYSTEM_MOKOSUITE_OFFLINE_DESC Moko\Plugin\System\MokoSuiteOffline diff --git a/source/packages/plg_system_mokosuite_tenant/mokosuite_tenant.xml b/source/packages/plg_system_mokosuite_tenant/mokosuite_tenant.xml index 28d88cd7..41b6fdc7 100644 --- a/source/packages/plg_system_mokosuite_tenant/mokosuite_tenant.xml +++ b/source/packages/plg_system_mokosuite_tenant/mokosuite_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.43-dev + 02.34.44-dev PLG_SYSTEM_MOKOSUITE_TENANT_DESC Moko\Plugin\System\MokoSuiteTenant diff --git a/source/packages/plg_task_mokosuite_tickets/mokosuite_tickets.xml b/source/packages/plg_task_mokosuite_tickets/mokosuite_tickets.xml index 606f329e..380e98b5 100644 --- a/source/packages/plg_task_mokosuite_tickets/mokosuite_tickets.xml +++ b/source/packages/plg_task_mokosuite_tickets/mokosuite_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.43-dev + 02.34.44-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoSuiteTickets diff --git a/source/packages/plg_task_mokosuitedemo/mokosuitedemo.xml b/source/packages/plg_task_mokosuitedemo/mokosuitedemo.xml index 07250115..4e3d2194 100644 --- a/source/packages/plg_task_mokosuitedemo/mokosuitedemo.xml +++ b/source/packages/plg_task_mokosuitedemo/mokosuitedemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.43-dev + 02.34.44-dev PLG_TASK_MOKOSUITEDEMO_DESC Moko\Plugin\Task\MokoSuiteDemo diff --git a/source/packages/plg_task_mokosuitedemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokosuitedemo/src/Service/DemoResetService.php index dda4b74b..3acc4111 100644 --- a/source/packages/plg_task_mokosuitedemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokosuitedemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoSuite * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoSuite * PATH: /src/packages/plg_system_mokosuite/Service/DemoResetService.php - * VERSION: 02.34.43 + * VERSION: 02.34.44 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokosuitesync/mokosuitesync.xml b/source/packages/plg_task_mokosuitesync/mokosuitesync.xml index 2c6981e2..54297bee 100644 --- a/source/packages/plg_task_mokosuitesync/mokosuitesync.xml +++ b/source/packages/plg_task_mokosuitesync/mokosuitesync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.43-dev + 02.34.44-dev PLG_TASK_MOKOSUITESYNC_DESC Moko\Plugin\Task\MokoSuiteSync diff --git a/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncReceiver.php index 291e2a8e..5175dd47 100644 --- a/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoSuite * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoSuite * PATH: /src/packages/plg_system_mokosuite/Service/ContentSyncReceiver.php - * VERSION: 02.34.43 + * VERSION: 02.34.44 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncService.php index 099e4e25..a989bd5a 100644 --- a/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoSuite * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoSuite * PATH: /src/packages/plg_system_mokosuite/Service/ContentSyncService.php - * VERSION: 02.34.43 + * VERSION: 02.34.44 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokosuite/mokosuite.xml b/source/packages/plg_webservices_mokosuite/mokosuite.xml index cc7b4d7e..2f1e3144 100644 --- a/source/packages/plg_webservices_mokosuite/mokosuite.xml +++ b/source/packages/plg_webservices_mokosuite/mokosuite.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.43-dev + 02.34.44-dev Joomla Web Services API routes for MokoSuite site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoSuite diff --git a/source/pkg_mokosuite.xml b/source/pkg_mokosuite.xml index 19a4dbfe..0081ff45 100644 --- a/source/pkg_mokosuite.xml +++ b/source/pkg_mokosuite.xml @@ -2,7 +2,7 @@ Package - MokoSuite mokosuite - 02.34.43-dev + 02.34.44-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From 0c5be6ab82e9a588d08764a2483ac56c79276511 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sun, 7 Jun 2026 11:10:10 -0500 Subject: [PATCH 68/73] docs: update changelog with all unreleased features --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3fae9ea9..4aeacdaf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,13 @@ - Font Awesome 7 loaded in admin backend — picks up MokoOnyx Kit code if present, falls back to bundled FA7 Free or FA6 CDN - MokoWaaS → MokoSuite database table migration in install script (create new, copy data, drop old) - MokoWaaS → MokoSuite extension param migration — copies params from all old mokowaas plugins/modules/component, then removes old entries and filesystem remnants +- Ticket contact linking — optional FK to Joomla contact records with display in list and detail views +- Multi-assignee tickets — junction table supports multiple users and user groups per ticket +- Customizable ticket statuses — admin-configurable lookup table replaces hardcoded ENUM (title, color, is_closed flag) +- Customizable ticket priorities — admin-configurable lookup table with weight and color +- Joomla custom fields integration for tickets (context: com_mokosuite.ticket) with field groups assignable per category +- MokoWaaS/MokoWaaSHQ migration bridge repos with updates.xml redirecting existing installs to MokoSuite/HQ +- Pre-release workflow triggers on push to dev/alpha/beta/rc branches (deployed to all 11 repos) ### Removed - PerfectPublisher webservices plugin (no longer needed) From 6dae4836075c0880953200031fe9df166bcb8969 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sun, 7 Jun 2026 16:10:46 +0000 Subject: [PATCH 69/73] chore(version): pre-release bump to 02.34.45-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokosuite/mokosuite.xml | 2 +- source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml | 2 +- .../mod_mokosuite_categories/mod_mokosuite_categories.xml | 2 +- source/packages/mod_mokosuite_cpanel/mod_mokosuite_cpanel.xml | 2 +- source/packages/mod_mokosuite_menu/mod_mokosuite_menu.xml | 2 +- source/packages/plg_system_mokosuite/Extension/MokoSuite.php | 2 +- .../plg_system_mokosuite/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokosuite/mokosuite.xml | 2 +- source/packages/plg_system_mokosuite/script.php | 2 +- source/packages/plg_system_mokosuite/services/provider.php | 2 +- .../plg_system_mokosuite_devtools/mokosuite_devtools.xml | 2 +- .../plg_system_mokosuite_firewall/mokosuite_firewall.xml | 2 +- .../plg_system_mokosuite_license/mokosuite_license.xml | 2 +- .../plg_system_mokosuite_monitor/mokosuite_monitor.xml | 2 +- .../plg_system_mokosuite_offline/mokosuite_offline.xml | 2 +- .../packages/plg_system_mokosuite_tenant/mokosuite_tenant.xml | 2 +- .../packages/plg_task_mokosuite_tickets/mokosuite_tickets.xml | 2 +- source/packages/plg_task_mokosuitedemo/mokosuitedemo.xml | 2 +- .../plg_task_mokosuitedemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokosuitesync/mokosuitesync.xml | 2 +- .../src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokosuitesync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokosuite/mokosuite.xml | 2 +- source/pkg_mokosuite.xml | 2 +- 43 files changed, 53 insertions(+), 53 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 68cd3c55..b281cf84 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoSuite MokoConsulting White-label identity, security hardening, and tenant restriction layer for Suite-managed Joomla environments - 02.34.44 + 02.34.45 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index ee38422a..3b99189f 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.44 +# VERSION: 02.34.45 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 4aeacdaf..a9040300 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoSuite.Documentation REPO: https://github.com/mokoconsulting-tech/mokosuite PATH: ./CHANGELOG.md - VERSION: 02.34.44 + VERSION: 02.34.45 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 3b97c2ce..13feda39 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Documentation REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.44 + VERSION: 02.34.45 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 455388a8..66df558e 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoSuiteBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoSuiteBrand - VERSION: 02.34.44 + VERSION: 02.34.45 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoSuiteBrand --> diff --git a/LICENSE.md b/LICENSE.md index f10c343b..96ce0773 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoSuite.Documentation REPO: https://github.com/mokoconsulting-tech/mokosuite PATH: ./LICENSE.md - VERSION: 02.34.44 + VERSION: 02.34.45 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index 5d2135dc..11638926 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoSuite - VERSION: 02.34.44 + VERSION: 02.34.45 PATH: /README.md BRIEF: MokoSuite platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index 5aa7f676..94d895c5 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.44 +VERSION: 02.34.45 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index d12c9df9..a061a8c5 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoSuite.Build REPO: https://github.com/mokoconsulting-tech/mokosuite FILE: build-guide.md - VERSION: 02.34.44 + VERSION: 02.34.45 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoSuite system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoSuite Build Guide (VERSION: 02.34.44) +# MokoSuite Build Guide (VERSION: 02.34.45) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index 111b748d..21f57c79 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.44 + VERSION: 02.34.45 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoSuite system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoSuite Configuration Guide (VERSION: 02.34.44) +# MokoSuite Configuration Guide (VERSION: 02.34.45) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index c0331aad..f57b0e5e 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.44 + VERSION: 02.34.45 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoSuite system plugin NOTE: First document in the guide set --> -# MokoSuite Installation Guide (VERSION: 02.34.44) +# MokoSuite Installation Guide (VERSION: 02.34.45) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index 2e8ef995..9271f53a 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.44 + VERSION: 02.34.45 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoSuite system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoSuite Operations Guide (VERSION: 02.34.44) +# MokoSuite Operations Guide (VERSION: 02.34.45) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index adf6ac61..a19a93ab 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.44 + VERSION: 02.34.45 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for Suite plugin governance --> -# MokoSuite Rollback and Recovery Guide (VERSION: 02.34.44) +# MokoSuite Rollback and Recovery Guide (VERSION: 02.34.45) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index a87c6e85..22cd562f 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.44 + VERSION: 02.34.45 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoSuite v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoSuite Testing Guide (VERSION: 02.34.44) +# MokoSuite Testing Guide (VERSION: 02.34.45) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index b6be2c6e..3db08d37 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.44 + VERSION: 02.34.45 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoSuite plugin NOTE: Designed for administrators and Suite operations teams --> -# MokoSuite Troubleshooting Guide (VERSION: 02.34.44) +# MokoSuite Troubleshooting Guide (VERSION: 02.34.45) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index e10fb312..4f99becb 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.44 + VERSION: 02.34.45 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoSuite plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoSuite Upgrade and Versioning Guide (VERSION: 02.34.44) +# MokoSuite Upgrade and Versioning Guide (VERSION: 02.34.45) ## Introduction diff --git a/docs/index.md b/docs/index.md index 214798c7..297697d4 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Documentation REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.44 + VERSION: 02.34.45 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoSuite plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoSuite Documentation Index (VERSION: 02.34.44) +# MokoSuite Documentation Index (VERSION: 02.34.45) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index 9a810676..1358a796 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoSuite REPO: https://github.com/mokoconsulting-tech/mokosuite PATH: /docs/plugin-basic.md - VERSION: 02.34.44 + VERSION: 02.34.45 BRIEF: Baseline documentation for the MokoSuite system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoSuite Plugin Overview (VERSION: 02.34.44) +# MokoSuite Plugin Overview (VERSION: 02.34.45) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index 33fffd92..86f28bb4 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoSuite.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoSuite PATH: /docs/update-server.md -VERSION: 02.34.44 +VERSION: 02.34.45 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokosuite/mokosuite.xml b/source/packages/com_mokosuite/mokosuite.xml index cbe4f0e0..54894eda 100644 --- a/source/packages/com_mokosuite/mokosuite.xml +++ b/source/packages/com_mokosuite/mokosuite.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.44-dev + 02.34.45-dev MokoSuite admin dashboard and REST API. Provides a control panel for managing MokoSuite feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoSuite diff --git a/source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml b/source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml index 36e88e4c..d85831ea 100644 --- a/source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml +++ b/source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.44-dev + 02.34.45-dev MOD_MOKOSUITE_CACHE_DESC Moko\Module\MokoSuiteCache diff --git a/source/packages/mod_mokosuite_categories/mod_mokosuite_categories.xml b/source/packages/mod_mokosuite_categories/mod_mokosuite_categories.xml index b085ff7f..8eb4d841 100644 --- a/source/packages/mod_mokosuite_categories/mod_mokosuite_categories.xml +++ b/source/packages/mod_mokosuite_categories/mod_mokosuite_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.44-dev + 02.34.45-dev MOD_MOKOSUITE_CATEGORIES_DESC Moko\Module\MokoSuiteCategories diff --git a/source/packages/mod_mokosuite_cpanel/mod_mokosuite_cpanel.xml b/source/packages/mod_mokosuite_cpanel/mod_mokosuite_cpanel.xml index db46b1bf..79f6dee7 100644 --- a/source/packages/mod_mokosuite_cpanel/mod_mokosuite_cpanel.xml +++ b/source/packages/mod_mokosuite_cpanel/mod_mokosuite_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.44-dev + 02.34.45-dev MOD_MOKOSUITE_CPANEL_DESC Moko\Module\MokoSuiteCpanel diff --git a/source/packages/mod_mokosuite_menu/mod_mokosuite_menu.xml b/source/packages/mod_mokosuite_menu/mod_mokosuite_menu.xml index b16522f4..f5b7da35 100644 --- a/source/packages/mod_mokosuite_menu/mod_mokosuite_menu.xml +++ b/source/packages/mod_mokosuite_menu/mod_mokosuite_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.44-dev + 02.34.45-dev MokoSuite admin sidebar menu — renders a dedicated MokoSuite section in the admin menu before Joomla's default menu. Moko\Module\MokoSuiteMenu diff --git a/source/packages/plg_system_mokosuite/Extension/MokoSuite.php b/source/packages/plg_system_mokosuite/Extension/MokoSuite.php index 63a3a3bf..8522cb40 100644 --- a/source/packages/plg_system_mokosuite/Extension/MokoSuite.php +++ b/source/packages/plg_system_mokosuite/Extension/MokoSuite.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoSuite * REPO: https://github.com/mokoconsulting-tech/mokosuite - * VERSION: 02.34.44 + * VERSION: 02.34.45 * PATH: /src/Extension/MokoSuite.php * NOTE: Core system plugin for MokoSuite admin tools suite */ diff --git a/source/packages/plg_system_mokosuite/Field/CopyableTokenField.php b/source/packages/plg_system_mokosuite/Field/CopyableTokenField.php index 2f73c23f..dead05bd 100644 --- a/source/packages/plg_system_mokosuite/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokosuite/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoSuite - * VERSION: 02.34.44 + * VERSION: 02.34.45 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokosuite/mokosuite.xml b/source/packages/plg_system_mokosuite/mokosuite.xml index 39ceefe7..120a225e 100644 --- a/source/packages/plg_system_mokosuite/mokosuite.xml +++ b/source/packages/plg_system_mokosuite/mokosuite.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.44-dev + 02.34.45-dev MokoSuite core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoSuite script.php diff --git a/source/packages/plg_system_mokosuite/script.php b/source/packages/plg_system_mokosuite/script.php index 69d33666..3dc4781b 100644 --- a/source/packages/plg_system_mokosuite/script.php +++ b/source/packages/plg_system_mokosuite/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoSuite * REPO: https://github.com/mokoconsulting-tech/mokosuite - * VERSION: 02.34.44 + * VERSION: 02.34.45 * PATH: /src/script.php * BRIEF: Installation script for MokoSuite plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokosuite/services/provider.php b/source/packages/plg_system_mokosuite/services/provider.php index 67672b8d..4e3ba3b5 100644 --- a/source/packages/plg_system_mokosuite/services/provider.php +++ b/source/packages/plg_system_mokosuite/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoSuite * REPO: https://github.com/mokoconsulting-tech/mokosuite - * VERSION: 02.34.44 + * VERSION: 02.34.45 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokosuite_devtools/mokosuite_devtools.xml b/source/packages/plg_system_mokosuite_devtools/mokosuite_devtools.xml index 90142cf1..230794e8 100644 --- a/source/packages/plg_system_mokosuite_devtools/mokosuite_devtools.xml +++ b/source/packages/plg_system_mokosuite_devtools/mokosuite_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.44-dev + 02.34.45-dev PLG_SYSTEM_MOKOSUITE_DEVTOOLS_DESC Moko\Plugin\System\MokoSuiteDevTools diff --git a/source/packages/plg_system_mokosuite_firewall/mokosuite_firewall.xml b/source/packages/plg_system_mokosuite_firewall/mokosuite_firewall.xml index f56367dd..ac4d89f7 100644 --- a/source/packages/plg_system_mokosuite_firewall/mokosuite_firewall.xml +++ b/source/packages/plg_system_mokosuite_firewall/mokosuite_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.44-dev + 02.34.45-dev PLG_SYSTEM_MOKOSUITE_FIREWALL_DESC Moko\Plugin\System\MokoSuiteFirewall diff --git a/source/packages/plg_system_mokosuite_license/mokosuite_license.xml b/source/packages/plg_system_mokosuite_license/mokosuite_license.xml index 30c897f8..d152e22e 100644 --- a/source/packages/plg_system_mokosuite_license/mokosuite_license.xml +++ b/source/packages/plg_system_mokosuite_license/mokosuite_license.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.44-dev + 02.34.45-dev PLG_SYSTEM_MOKOSUITE_LICENSE_DESC Moko\Plugin\System\MokoSuiteLicense srcserviceslanguage diff --git a/source/packages/plg_system_mokosuite_monitor/mokosuite_monitor.xml b/source/packages/plg_system_mokosuite_monitor/mokosuite_monitor.xml index db96638c..be3faee2 100644 --- a/source/packages/plg_system_mokosuite_monitor/mokosuite_monitor.xml +++ b/source/packages/plg_system_mokosuite_monitor/mokosuite_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.44-dev + 02.34.45-dev PLG_SYSTEM_MOKOSUITE_MONITOR_DESC Moko\Plugin\System\MokoSuiteMonitor diff --git a/source/packages/plg_system_mokosuite_offline/mokosuite_offline.xml b/source/packages/plg_system_mokosuite_offline/mokosuite_offline.xml index 1205f7cf..21499195 100644 --- a/source/packages/plg_system_mokosuite_offline/mokosuite_offline.xml +++ b/source/packages/plg_system_mokosuite_offline/mokosuite_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.44-dev + 02.34.45-dev PLG_SYSTEM_MOKOSUITE_OFFLINE_DESC Moko\Plugin\System\MokoSuiteOffline diff --git a/source/packages/plg_system_mokosuite_tenant/mokosuite_tenant.xml b/source/packages/plg_system_mokosuite_tenant/mokosuite_tenant.xml index 41b6fdc7..5e38cc7b 100644 --- a/source/packages/plg_system_mokosuite_tenant/mokosuite_tenant.xml +++ b/source/packages/plg_system_mokosuite_tenant/mokosuite_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.44-dev + 02.34.45-dev PLG_SYSTEM_MOKOSUITE_TENANT_DESC Moko\Plugin\System\MokoSuiteTenant diff --git a/source/packages/plg_task_mokosuite_tickets/mokosuite_tickets.xml b/source/packages/plg_task_mokosuite_tickets/mokosuite_tickets.xml index 380e98b5..a5a40853 100644 --- a/source/packages/plg_task_mokosuite_tickets/mokosuite_tickets.xml +++ b/source/packages/plg_task_mokosuite_tickets/mokosuite_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.44-dev + 02.34.45-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoSuiteTickets diff --git a/source/packages/plg_task_mokosuitedemo/mokosuitedemo.xml b/source/packages/plg_task_mokosuitedemo/mokosuitedemo.xml index 4e3d2194..7192d3b6 100644 --- a/source/packages/plg_task_mokosuitedemo/mokosuitedemo.xml +++ b/source/packages/plg_task_mokosuitedemo/mokosuitedemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.44-dev + 02.34.45-dev PLG_TASK_MOKOSUITEDEMO_DESC Moko\Plugin\Task\MokoSuiteDemo diff --git a/source/packages/plg_task_mokosuitedemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokosuitedemo/src/Service/DemoResetService.php index 3acc4111..56d189cd 100644 --- a/source/packages/plg_task_mokosuitedemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokosuitedemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoSuite * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoSuite * PATH: /src/packages/plg_system_mokosuite/Service/DemoResetService.php - * VERSION: 02.34.44 + * VERSION: 02.34.45 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokosuitesync/mokosuitesync.xml b/source/packages/plg_task_mokosuitesync/mokosuitesync.xml index 54297bee..2ab54454 100644 --- a/source/packages/plg_task_mokosuitesync/mokosuitesync.xml +++ b/source/packages/plg_task_mokosuitesync/mokosuitesync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.44-dev + 02.34.45-dev PLG_TASK_MOKOSUITESYNC_DESC Moko\Plugin\Task\MokoSuiteSync diff --git a/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncReceiver.php index 5175dd47..c4905a87 100644 --- a/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoSuite * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoSuite * PATH: /src/packages/plg_system_mokosuite/Service/ContentSyncReceiver.php - * VERSION: 02.34.44 + * VERSION: 02.34.45 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncService.php index a989bd5a..ac4eca47 100644 --- a/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoSuite * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoSuite * PATH: /src/packages/plg_system_mokosuite/Service/ContentSyncService.php - * VERSION: 02.34.44 + * VERSION: 02.34.45 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokosuite/mokosuite.xml b/source/packages/plg_webservices_mokosuite/mokosuite.xml index 2f1e3144..97a38d5b 100644 --- a/source/packages/plg_webservices_mokosuite/mokosuite.xml +++ b/source/packages/plg_webservices_mokosuite/mokosuite.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.44-dev + 02.34.45-dev Joomla Web Services API routes for MokoSuite site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoSuite diff --git a/source/pkg_mokosuite.xml b/source/pkg_mokosuite.xml index 0081ff45..330c7465 100644 --- a/source/pkg_mokosuite.xml +++ b/source/pkg_mokosuite.xml @@ -2,7 +2,7 @@ Package - MokoSuite mokosuite - 02.34.44-dev + 02.34.45-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From e95809ba616452599c6d21387cb78aea02daa068 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sun, 7 Jun 2026 11:12:24 -0500 Subject: [PATCH 70/73] fix: transfer download key from old pkg_mokowaas update site during migration saveDownloadKey() now checks pkg_mokowaas update site as fallback when pkg_mokosuite has no dlid, ensuring license keys survive the rename. --- source/script.php | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/source/script.php b/source/script.php index 2f38e791..42f89938 100644 --- a/source/script.php +++ b/source/script.php @@ -681,20 +681,26 @@ class Pkg_MokosuiteInstallerScript try { $db = Factory::getDbo(); - $db->setQuery( - $db->getQuery(true) - ->select($db->quoteName('us.extra_query')) - ->from($db->quoteName('#__update_sites', 'us')) - ->join('INNER', $db->quoteName('#__update_sites_extensions', 'use') . ' ON use.update_site_id = us.update_site_id') - ->join('INNER', $db->quoteName('#__extensions', 'e') . ' ON e.extension_id = use.extension_id') - ->where($db->quoteName('e.element') . ' = ' . $db->quote('pkg_mokosuite')) - ->setLimit(1) - ); - $key = $db->loadResult(); - if (!empty($key)) + // Check pkg_mokosuite first, then fall back to old pkg_mokowaas + foreach (['pkg_mokosuite', 'pkg_mokowaas'] as $element) { - $this->savedDownloadKey = $key; + $db->setQuery( + $db->getQuery(true) + ->select($db->quoteName('us.extra_query')) + ->from($db->quoteName('#__update_sites', 'us')) + ->join('INNER', $db->quoteName('#__update_sites_extensions', 'use') . ' ON use.update_site_id = us.update_site_id') + ->join('INNER', $db->quoteName('#__extensions', 'e') . ' ON e.extension_id = use.extension_id') + ->where($db->quoteName('e.element') . ' = ' . $db->quote($element)) + ->setLimit(1) + ); + $key = $db->loadResult(); + + if (!empty($key) && strpos($key, 'dlid=') !== false) + { + $this->savedDownloadKey = $key; + break; + } } } catch (\Throwable $e) {} From 0c7a35bd57888dfebef3323da308f3278adabb33 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sun, 7 Jun 2026 16:12:51 +0000 Subject: [PATCH 71/73] chore(version): pre-release bump to 02.34.46-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokosuite/mokosuite.xml | 2 +- source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml | 2 +- .../mod_mokosuite_categories/mod_mokosuite_categories.xml | 2 +- source/packages/mod_mokosuite_cpanel/mod_mokosuite_cpanel.xml | 2 +- source/packages/mod_mokosuite_menu/mod_mokosuite_menu.xml | 2 +- source/packages/plg_system_mokosuite/Extension/MokoSuite.php | 2 +- .../plg_system_mokosuite/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokosuite/mokosuite.xml | 2 +- source/packages/plg_system_mokosuite/script.php | 2 +- source/packages/plg_system_mokosuite/services/provider.php | 2 +- .../plg_system_mokosuite_devtools/mokosuite_devtools.xml | 2 +- .../plg_system_mokosuite_firewall/mokosuite_firewall.xml | 2 +- .../plg_system_mokosuite_license/mokosuite_license.xml | 2 +- .../plg_system_mokosuite_monitor/mokosuite_monitor.xml | 2 +- .../plg_system_mokosuite_offline/mokosuite_offline.xml | 2 +- .../packages/plg_system_mokosuite_tenant/mokosuite_tenant.xml | 2 +- .../packages/plg_task_mokosuite_tickets/mokosuite_tickets.xml | 2 +- source/packages/plg_task_mokosuitedemo/mokosuitedemo.xml | 2 +- .../plg_task_mokosuitedemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokosuitesync/mokosuitesync.xml | 2 +- .../src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokosuitesync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokosuite/mokosuite.xml | 2 +- source/pkg_mokosuite.xml | 2 +- 43 files changed, 53 insertions(+), 53 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index b281cf84..6ad9ee30 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoSuite MokoConsulting White-label identity, security hardening, and tenant restriction layer for Suite-managed Joomla environments - 02.34.45 + 02.34.46 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 3b99189f..56a0d30b 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.45 +# VERSION: 02.34.46 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index a9040300..5a6d2e0c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoSuite.Documentation REPO: https://github.com/mokoconsulting-tech/mokosuite PATH: ./CHANGELOG.md - VERSION: 02.34.45 + VERSION: 02.34.46 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 13feda39..7426cb1f 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Documentation REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.45 + VERSION: 02.34.46 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index 66df558e..bbae6ef6 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoSuiteBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoSuiteBrand - VERSION: 02.34.45 + VERSION: 02.34.46 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoSuiteBrand --> diff --git a/LICENSE.md b/LICENSE.md index 96ce0773..d87d12d0 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoSuite.Documentation REPO: https://github.com/mokoconsulting-tech/mokosuite PATH: ./LICENSE.md - VERSION: 02.34.45 + VERSION: 02.34.46 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index 11638926..bcae1205 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoSuite - VERSION: 02.34.45 + VERSION: 02.34.46 PATH: /README.md BRIEF: MokoSuite platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index 94d895c5..b2a0f710 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.45 +VERSION: 02.34.46 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index a061a8c5..c5aae855 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoSuite.Build REPO: https://github.com/mokoconsulting-tech/mokosuite FILE: build-guide.md - VERSION: 02.34.45 + VERSION: 02.34.46 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoSuite system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoSuite Build Guide (VERSION: 02.34.45) +# MokoSuite Build Guide (VERSION: 02.34.46) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index 21f57c79..42f4149f 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.45 + VERSION: 02.34.46 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoSuite system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoSuite Configuration Guide (VERSION: 02.34.45) +# MokoSuite Configuration Guide (VERSION: 02.34.46) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index f57b0e5e..28b39bcd 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.45 + VERSION: 02.34.46 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoSuite system plugin NOTE: First document in the guide set --> -# MokoSuite Installation Guide (VERSION: 02.34.45) +# MokoSuite Installation Guide (VERSION: 02.34.46) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index 9271f53a..46af21bd 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.45 + VERSION: 02.34.46 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoSuite system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoSuite Operations Guide (VERSION: 02.34.45) +# MokoSuite Operations Guide (VERSION: 02.34.46) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index a19a93ab..2e47d81b 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.45 + VERSION: 02.34.46 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for Suite plugin governance --> -# MokoSuite Rollback and Recovery Guide (VERSION: 02.34.45) +# MokoSuite Rollback and Recovery Guide (VERSION: 02.34.46) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index 22cd562f..1fbffc68 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.45 + VERSION: 02.34.46 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoSuite v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoSuite Testing Guide (VERSION: 02.34.45) +# MokoSuite Testing Guide (VERSION: 02.34.46) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index 3db08d37..9627402b 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.45 + VERSION: 02.34.46 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoSuite plugin NOTE: Designed for administrators and Suite operations teams --> -# MokoSuite Troubleshooting Guide (VERSION: 02.34.45) +# MokoSuite Troubleshooting Guide (VERSION: 02.34.46) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index 4f99becb..05c4bd04 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.45 + VERSION: 02.34.46 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoSuite plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoSuite Upgrade and Versioning Guide (VERSION: 02.34.45) +# MokoSuite Upgrade and Versioning Guide (VERSION: 02.34.46) ## Introduction diff --git a/docs/index.md b/docs/index.md index 297697d4..1469de0a 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Documentation REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.45 + VERSION: 02.34.46 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoSuite plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoSuite Documentation Index (VERSION: 02.34.45) +# MokoSuite Documentation Index (VERSION: 02.34.46) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index 1358a796..7a7a5bd0 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoSuite REPO: https://github.com/mokoconsulting-tech/mokosuite PATH: /docs/plugin-basic.md - VERSION: 02.34.45 + VERSION: 02.34.46 BRIEF: Baseline documentation for the MokoSuite system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoSuite Plugin Overview (VERSION: 02.34.45) +# MokoSuite Plugin Overview (VERSION: 02.34.46) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index 86f28bb4..ab836bc7 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoSuite.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoSuite PATH: /docs/update-server.md -VERSION: 02.34.45 +VERSION: 02.34.46 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokosuite/mokosuite.xml b/source/packages/com_mokosuite/mokosuite.xml index 54894eda..95105376 100644 --- a/source/packages/com_mokosuite/mokosuite.xml +++ b/source/packages/com_mokosuite/mokosuite.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.45-dev + 02.34.46-dev MokoSuite admin dashboard and REST API. Provides a control panel for managing MokoSuite feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoSuite diff --git a/source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml b/source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml index d85831ea..963c3793 100644 --- a/source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml +++ b/source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.45-dev + 02.34.46-dev MOD_MOKOSUITE_CACHE_DESC Moko\Module\MokoSuiteCache diff --git a/source/packages/mod_mokosuite_categories/mod_mokosuite_categories.xml b/source/packages/mod_mokosuite_categories/mod_mokosuite_categories.xml index 8eb4d841..9f059f73 100644 --- a/source/packages/mod_mokosuite_categories/mod_mokosuite_categories.xml +++ b/source/packages/mod_mokosuite_categories/mod_mokosuite_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.45-dev + 02.34.46-dev MOD_MOKOSUITE_CATEGORIES_DESC Moko\Module\MokoSuiteCategories diff --git a/source/packages/mod_mokosuite_cpanel/mod_mokosuite_cpanel.xml b/source/packages/mod_mokosuite_cpanel/mod_mokosuite_cpanel.xml index 79f6dee7..473ff02f 100644 --- a/source/packages/mod_mokosuite_cpanel/mod_mokosuite_cpanel.xml +++ b/source/packages/mod_mokosuite_cpanel/mod_mokosuite_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.45-dev + 02.34.46-dev MOD_MOKOSUITE_CPANEL_DESC Moko\Module\MokoSuiteCpanel diff --git a/source/packages/mod_mokosuite_menu/mod_mokosuite_menu.xml b/source/packages/mod_mokosuite_menu/mod_mokosuite_menu.xml index f5b7da35..69fc9ec2 100644 --- a/source/packages/mod_mokosuite_menu/mod_mokosuite_menu.xml +++ b/source/packages/mod_mokosuite_menu/mod_mokosuite_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.45-dev + 02.34.46-dev MokoSuite admin sidebar menu — renders a dedicated MokoSuite section in the admin menu before Joomla's default menu. Moko\Module\MokoSuiteMenu diff --git a/source/packages/plg_system_mokosuite/Extension/MokoSuite.php b/source/packages/plg_system_mokosuite/Extension/MokoSuite.php index 8522cb40..d92d03c5 100644 --- a/source/packages/plg_system_mokosuite/Extension/MokoSuite.php +++ b/source/packages/plg_system_mokosuite/Extension/MokoSuite.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoSuite * REPO: https://github.com/mokoconsulting-tech/mokosuite - * VERSION: 02.34.45 + * VERSION: 02.34.46 * PATH: /src/Extension/MokoSuite.php * NOTE: Core system plugin for MokoSuite admin tools suite */ diff --git a/source/packages/plg_system_mokosuite/Field/CopyableTokenField.php b/source/packages/plg_system_mokosuite/Field/CopyableTokenField.php index dead05bd..c31a9d2d 100644 --- a/source/packages/plg_system_mokosuite/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokosuite/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoSuite - * VERSION: 02.34.45 + * VERSION: 02.34.46 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokosuite/mokosuite.xml b/source/packages/plg_system_mokosuite/mokosuite.xml index 120a225e..c618eb88 100644 --- a/source/packages/plg_system_mokosuite/mokosuite.xml +++ b/source/packages/plg_system_mokosuite/mokosuite.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.45-dev + 02.34.46-dev MokoSuite core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoSuite script.php diff --git a/source/packages/plg_system_mokosuite/script.php b/source/packages/plg_system_mokosuite/script.php index 3dc4781b..73185d8a 100644 --- a/source/packages/plg_system_mokosuite/script.php +++ b/source/packages/plg_system_mokosuite/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoSuite * REPO: https://github.com/mokoconsulting-tech/mokosuite - * VERSION: 02.34.45 + * VERSION: 02.34.46 * PATH: /src/script.php * BRIEF: Installation script for MokoSuite plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokosuite/services/provider.php b/source/packages/plg_system_mokosuite/services/provider.php index 4e3ba3b5..25528e5c 100644 --- a/source/packages/plg_system_mokosuite/services/provider.php +++ b/source/packages/plg_system_mokosuite/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoSuite * REPO: https://github.com/mokoconsulting-tech/mokosuite - * VERSION: 02.34.45 + * VERSION: 02.34.46 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokosuite_devtools/mokosuite_devtools.xml b/source/packages/plg_system_mokosuite_devtools/mokosuite_devtools.xml index 230794e8..52b9528a 100644 --- a/source/packages/plg_system_mokosuite_devtools/mokosuite_devtools.xml +++ b/source/packages/plg_system_mokosuite_devtools/mokosuite_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.45-dev + 02.34.46-dev PLG_SYSTEM_MOKOSUITE_DEVTOOLS_DESC Moko\Plugin\System\MokoSuiteDevTools diff --git a/source/packages/plg_system_mokosuite_firewall/mokosuite_firewall.xml b/source/packages/plg_system_mokosuite_firewall/mokosuite_firewall.xml index ac4d89f7..90d79a74 100644 --- a/source/packages/plg_system_mokosuite_firewall/mokosuite_firewall.xml +++ b/source/packages/plg_system_mokosuite_firewall/mokosuite_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.45-dev + 02.34.46-dev PLG_SYSTEM_MOKOSUITE_FIREWALL_DESC Moko\Plugin\System\MokoSuiteFirewall diff --git a/source/packages/plg_system_mokosuite_license/mokosuite_license.xml b/source/packages/plg_system_mokosuite_license/mokosuite_license.xml index d152e22e..2d00ed98 100644 --- a/source/packages/plg_system_mokosuite_license/mokosuite_license.xml +++ b/source/packages/plg_system_mokosuite_license/mokosuite_license.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.45-dev + 02.34.46-dev PLG_SYSTEM_MOKOSUITE_LICENSE_DESC Moko\Plugin\System\MokoSuiteLicense srcserviceslanguage diff --git a/source/packages/plg_system_mokosuite_monitor/mokosuite_monitor.xml b/source/packages/plg_system_mokosuite_monitor/mokosuite_monitor.xml index be3faee2..fcea5da4 100644 --- a/source/packages/plg_system_mokosuite_monitor/mokosuite_monitor.xml +++ b/source/packages/plg_system_mokosuite_monitor/mokosuite_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.45-dev + 02.34.46-dev PLG_SYSTEM_MOKOSUITE_MONITOR_DESC Moko\Plugin\System\MokoSuiteMonitor diff --git a/source/packages/plg_system_mokosuite_offline/mokosuite_offline.xml b/source/packages/plg_system_mokosuite_offline/mokosuite_offline.xml index 21499195..896fbc67 100644 --- a/source/packages/plg_system_mokosuite_offline/mokosuite_offline.xml +++ b/source/packages/plg_system_mokosuite_offline/mokosuite_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.45-dev + 02.34.46-dev PLG_SYSTEM_MOKOSUITE_OFFLINE_DESC Moko\Plugin\System\MokoSuiteOffline diff --git a/source/packages/plg_system_mokosuite_tenant/mokosuite_tenant.xml b/source/packages/plg_system_mokosuite_tenant/mokosuite_tenant.xml index 5e38cc7b..7c090575 100644 --- a/source/packages/plg_system_mokosuite_tenant/mokosuite_tenant.xml +++ b/source/packages/plg_system_mokosuite_tenant/mokosuite_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.45-dev + 02.34.46-dev PLG_SYSTEM_MOKOSUITE_TENANT_DESC Moko\Plugin\System\MokoSuiteTenant diff --git a/source/packages/plg_task_mokosuite_tickets/mokosuite_tickets.xml b/source/packages/plg_task_mokosuite_tickets/mokosuite_tickets.xml index a5a40853..b9b84072 100644 --- a/source/packages/plg_task_mokosuite_tickets/mokosuite_tickets.xml +++ b/source/packages/plg_task_mokosuite_tickets/mokosuite_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.45-dev + 02.34.46-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoSuiteTickets diff --git a/source/packages/plg_task_mokosuitedemo/mokosuitedemo.xml b/source/packages/plg_task_mokosuitedemo/mokosuitedemo.xml index 7192d3b6..bf56588f 100644 --- a/source/packages/plg_task_mokosuitedemo/mokosuitedemo.xml +++ b/source/packages/plg_task_mokosuitedemo/mokosuitedemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.45-dev + 02.34.46-dev PLG_TASK_MOKOSUITEDEMO_DESC Moko\Plugin\Task\MokoSuiteDemo diff --git a/source/packages/plg_task_mokosuitedemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokosuitedemo/src/Service/DemoResetService.php index 56d189cd..8e73bebe 100644 --- a/source/packages/plg_task_mokosuitedemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokosuitedemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoSuite * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoSuite * PATH: /src/packages/plg_system_mokosuite/Service/DemoResetService.php - * VERSION: 02.34.45 + * VERSION: 02.34.46 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokosuitesync/mokosuitesync.xml b/source/packages/plg_task_mokosuitesync/mokosuitesync.xml index 2ab54454..eb860bc2 100644 --- a/source/packages/plg_task_mokosuitesync/mokosuitesync.xml +++ b/source/packages/plg_task_mokosuitesync/mokosuitesync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.45-dev + 02.34.46-dev PLG_TASK_MOKOSUITESYNC_DESC Moko\Plugin\Task\MokoSuiteSync diff --git a/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncReceiver.php index c4905a87..6b8cbc80 100644 --- a/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoSuite * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoSuite * PATH: /src/packages/plg_system_mokosuite/Service/ContentSyncReceiver.php - * VERSION: 02.34.45 + * VERSION: 02.34.46 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncService.php index ac4eca47..301f7693 100644 --- a/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoSuite * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoSuite * PATH: /src/packages/plg_system_mokosuite/Service/ContentSyncService.php - * VERSION: 02.34.45 + * VERSION: 02.34.46 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokosuite/mokosuite.xml b/source/packages/plg_webservices_mokosuite/mokosuite.xml index 97a38d5b..a5e4816f 100644 --- a/source/packages/plg_webservices_mokosuite/mokosuite.xml +++ b/source/packages/plg_webservices_mokosuite/mokosuite.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.45-dev + 02.34.46-dev Joomla Web Services API routes for MokoSuite site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoSuite diff --git a/source/pkg_mokosuite.xml b/source/pkg_mokosuite.xml index 330c7465..3b3735a8 100644 --- a/source/pkg_mokosuite.xml +++ b/source/pkg_mokosuite.xml @@ -2,7 +2,7 @@ Package - MokoSuite mokosuite - 02.34.45-dev + 02.34.46-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech From a00b1647d465c7a5e69c68151ce8d15de2696e67 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Sun, 7 Jun 2026 11:18:35 -0500 Subject: [PATCH 72/73] =?UTF-8?q?fix:=20resolve=20PR=20review=20critical?= =?UTF-8?q?=20issues=20=E2=80=94=20status=20ID-based=20updates,=20SLA=20ch?= =?UTF-8?q?ecks,=20counts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - updateStatus() now accepts status ID, validates against lookup table, writes both status and status_id columns, uses is_closed flag - Added automation recursion guard to prevent infinite loops - getStatusCounts() now joins on statuses table (dynamic, not hardcoded) - getOverdueTickets() uses is_closed instead of ENUM string comparison - Template SLA checks use status_is_closed instead of in_array() - Status summary cards rendered dynamically from lookup table --- .../admin/src/Model/TicketsModel.php | 100 +++++++++++------- .../admin/tmpl/ticket/default.php | 6 +- .../admin/tmpl/tickets/default.php | 10 +- 3 files changed, 68 insertions(+), 48 deletions(-) diff --git a/source/packages/com_mokosuite/admin/src/Model/TicketsModel.php b/source/packages/com_mokosuite/admin/src/Model/TicketsModel.php index 476b94fd..1ba4c52c 100644 --- a/source/packages/com_mokosuite/admin/src/Model/TicketsModel.php +++ b/source/packages/com_mokosuite/admin/src/Model/TicketsModel.php @@ -43,6 +43,7 @@ class TicketsModel extends BaseDatabaseModel $db->quoteName('pr.title', 'priority_title'), $db->quoteName('pr.alias', 'priority_alias'), $db->quoteName('pr.color', 'priority_color'), + $db->quoteName('st.is_closed', 'status_is_closed'), ]) ->from($db->quoteName('#__mokosuite_tickets', 't')) ->leftJoin($db->quoteName('#__mokosuite_ticket_categories', 'c') . ' ON c.id = t.category_id') @@ -305,47 +306,59 @@ class TicketsModel extends BaseDatabaseModel } } + /** @var bool Guard against automation recursion */ + private bool $automationRunning = false; + /** - * Update ticket status. + * Update ticket status by status ID (lookup table). */ - public function updateStatus(int $ticketId, string $status): array + public function updateStatus(int $ticketId, int $statusId): array { - $valid = ['open', 'in_progress', 'waiting', 'resolved', 'closed']; - - if (!\in_array($status, $valid, true)) - { - return ['success' => false, 'message' => 'Invalid status.']; - } - try { $db = $this->getDatabase(); $now = Factory::getDate()->toSql(); + // Validate status ID against lookup table + $db->setQuery( + $db->getQuery(true) + ->select('*') + ->from($db->quoteName('#__mokosuite_ticket_statuses')) + ->where($db->quoteName('id') . ' = ' . $statusId) + ); + $status = $db->loadObject(); + + if (!$status) + { + return ['success' => false, 'message' => 'Invalid status.']; + } + // Capture old status for notification $db->setQuery( $db->getQuery(true) - ->select($db->quoteName('status')) + ->select($db->quoteName('status_id')) ->from($db->quoteName('#__mokosuite_tickets')) ->where($db->quoteName('id') . ' = ' . $ticketId) ); - $oldStatus = $db->loadResult() ?? ''; + $oldStatusId = (int) $db->loadResult(); $sets = [ - $db->quoteName('status') . ' = ' . $db->quote($status), + $db->quoteName('status') . ' = ' . $db->quote($status->alias), + $db->quoteName('status_id') . ' = ' . $statusId, $db->quoteName('modified') . ' = ' . $db->quote($now), ]; - if ($status === 'resolved') - { - $sets[] = $db->quoteName('resolved') . ' = ' . $db->quote($now); - } - - if ($status === 'closed') + if ($status->is_closed) { $sets[] = $db->quoteName('closed') . ' = ' . $db->quote($now); } + // Set resolved timestamp for "resolved" alias (backward compat) + if ($status->alias === 'resolved') + { + $sets[] = $db->quoteName('resolved') . ' = ' . $db->quote($now); + } + $db->setQuery( $db->getQuery(true) ->update($db->quoteName('#__mokosuite_tickets')) @@ -353,14 +366,21 @@ class TicketsModel extends BaseDatabaseModel ->where($db->quoteName('id') . ' = ' . $ticketId) )->execute(); - // Run automation + notifications - $this->runAutomation('status_changed', $ticketId); - NotificationService::notify('status_changed', $this->getTicket($ticketId), ['old_status' => $oldStatus]); + // Run automation + notifications (with recursion guard) + if (!$this->automationRunning) + { + $this->automationRunning = true; + $this->runAutomation('status_changed', $ticketId); + NotificationService::notify('status_changed', $this->getTicket($ticketId), ['old_status_id' => $oldStatusId]); + $this->automationRunning = false; + } - return ['success' => true, 'message' => 'Status updated to ' . $status . '.']; + return ['success' => true, 'message' => 'Status updated to ' . $status->title . '.']; } catch (\Throwable $e) { + $this->automationRunning = false; + return ['success' => false, 'message' => 'Failed: ' . $e->getMessage()]; } } @@ -679,25 +699,26 @@ class TicketsModel extends BaseDatabaseModel /** * Get ticket counts by status for dashboard. */ - public function getStatusCounts(): object + public function getStatusCounts(): array { $db = $this->getDatabase(); $db->setQuery( $db->getQuery(true) - ->select([$db->quoteName('status'), 'COUNT(*) AS ' . $db->quoteName('cnt')]) - ->from($db->quoteName('#__mokosuite_tickets')) - ->group($db->quoteName('status')) + ->select([ + $db->quoteName('s.id'), + $db->quoteName('s.title'), + $db->quoteName('s.alias'), + $db->quoteName('s.color'), + $db->quoteName('s.is_closed'), + 'COUNT(' . $db->quoteName('t.id') . ') AS ' . $db->quoteName('cnt'), + ]) + ->from($db->quoteName('#__mokosuite_ticket_statuses', 's')) + ->leftJoin($db->quoteName('#__mokosuite_tickets', 't') . ' ON t.status_id = s.id') + ->group($db->quoteName('s.id')) + ->order($db->quoteName('s.ordering') . ' ASC') ); - $rows = $db->loadObjectList('status') ?: []; - return (object) [ - 'open' => (int) ($rows['open']->cnt ?? 0), - 'in_progress' => (int) ($rows['in_progress']->cnt ?? 0), - 'waiting' => (int) ($rows['waiting']->cnt ?? 0), - 'resolved' => (int) ($rows['resolved']->cnt ?? 0), - 'closed' => (int) ($rows['closed']->cnt ?? 0), - 'total' => array_sum(array_map(fn($r) => (int) $r->cnt, $rows)), - ]; + return $db->loadObjectList() ?: []; } /** @@ -709,10 +730,11 @@ class TicketsModel extends BaseDatabaseModel $now = Factory::getDate()->toSql(); $query = $db->getQuery(true) - ->select([$db->quoteName('id'), $db->quoteName('subject'), $db->quoteName('priority'), - $db->quoteName('sla_response_due'), $db->quoteName('sla_resolution_due'), $db->quoteName('sla_responded')]) - ->from($db->quoteName('#__mokosuite_tickets')) - ->where($db->quoteName('status') . ' NOT IN (' . $db->quote('resolved') . ',' . $db->quote('closed') . ')') + ->select(['t.' . $db->quoteName('id'), $db->quoteName('t.subject'), $db->quoteName('t.priority'), + $db->quoteName('t.sla_response_due'), $db->quoteName('t.sla_resolution_due'), $db->quoteName('t.sla_responded')]) + ->from($db->quoteName('#__mokosuite_tickets', 't')) + ->leftJoin($db->quoteName('#__mokosuite_ticket_statuses', 's') . ' ON s.id = t.status_id') + ->where('(' . $db->quoteName('s.is_closed') . ' = 0 OR ' . $db->quoteName('s.is_closed') . ' IS NULL)') ->where('((' . $db->quoteName('sla_response_due') . ' < ' . $db->quote($now) . ' AND ' . $db->quoteName('sla_responded') . ' = 0)' . ' OR ' . $db->quoteName('sla_resolution_due') . ' < ' . $db->quote($now) . ')') ->order($db->quoteName('sla_resolution_due') . ' ASC'); diff --git a/source/packages/com_mokosuite/admin/tmpl/ticket/default.php b/source/packages/com_mokosuite/admin/tmpl/ticket/default.php index 4c5a462b..bcef0733 100644 --- a/source/packages/com_mokosuite/admin/tmpl/ticket/default.php +++ b/source/packages/com_mokosuite/admin/tmpl/ticket/default.php @@ -133,10 +133,10 @@ $priorities = $this->priorities ?? [];
Resolution Due
status, ['resolved','closed']) && strtotime($t->sla_resolution_due) < time(); + $resolutionOverdue = !!empty($t->status_is_closed) && strtotime($t->sla_resolution_due) < time(); ?> - - status, ['resolved','closed']) ? 'Met' : HTMLHelper::_('date', $t->sla_resolution_due, 'M d H:i'); ?> + + status_is_closed) ? 'Met' : HTMLHelper::_('date', $t->sla_resolution_due, 'M d H:i'); ?>
diff --git a/source/packages/com_mokosuite/admin/tmpl/tickets/default.php b/source/packages/com_mokosuite/admin/tmpl/tickets/default.php index 154ebf68..26cb3d76 100644 --- a/source/packages/com_mokosuite/admin/tmpl/tickets/default.php +++ b/source/packages/com_mokosuite/admin/tmpl/tickets/default.php @@ -20,11 +20,9 @@ $token = Session::getFormToken();
-
open; ?>Open
-
in_progress; ?>In Progress
-
waiting; ?>Waiting
-
resolved; ?>Resolved
-
closed; ?>Closed
+ +
cnt; ?>escape($sc->title); ?>
+ 0): ?>
SLA Overdue
@@ -91,7 +89,7 @@ $token = Session::getFormToken(); $slaClass = ''; $now = time(); if ($t->sla_response_due && !$t->sla_responded && strtotime($t->sla_response_due) < $now) $slaClass = 'table-danger'; - elseif ($t->sla_resolution_due && strtotime($t->sla_resolution_due) < $now && !\in_array($t->status, ['resolved','closed'])) $slaClass = 'table-danger'; + elseif ($t->sla_resolution_due && strtotime($t->sla_resolution_due) < $now && empty($t->status_is_closed)) $slaClass = 'table-danger'; elseif ($t->sla_response_due && !$t->sla_responded && strtotime($t->sla_response_due) < $now + 3600) $slaClass = 'table-warning'; ?>
From be4a9f34ec4cca5b4d8e9d6a5d44d022b50050e7 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Sun, 7 Jun 2026 16:19:35 +0000 Subject: [PATCH 73/73] chore(version): pre-release bump to 02.34.47-dev [skip ci] --- .mokogitea/manifest.xml | 2 +- .mokogitea/workflows/issue-branch.yml | 2 +- CHANGELOG.md | 2 +- CODE_OF_CONDUCT.md | 2 +- GOVERNANCE.md | 2 +- LICENSE.md | 2 +- README.md | 2 +- SECURITY.md | 2 +- docs/guides/build-guide.md | 4 ++-- docs/guides/configuration-guide.md | 4 ++-- docs/guides/installation-guide.md | 4 ++-- docs/guides/operations-guide.md | 4 ++-- docs/guides/rollback-and-recovery-guide.md | 4 ++-- docs/guides/testing-guide.md | 4 ++-- docs/guides/troubleshooting-guide.md | 4 ++-- docs/guides/upgrade-and-versioning-guide.md | 4 ++-- docs/index.md | 4 ++-- docs/plugin-basic.md | 4 ++-- docs/update-server.md | 2 +- source/packages/com_mokosuite/mokosuite.xml | 2 +- source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml | 2 +- .../mod_mokosuite_categories/mod_mokosuite_categories.xml | 2 +- source/packages/mod_mokosuite_cpanel/mod_mokosuite_cpanel.xml | 2 +- source/packages/mod_mokosuite_menu/mod_mokosuite_menu.xml | 2 +- source/packages/plg_system_mokosuite/Extension/MokoSuite.php | 2 +- .../plg_system_mokosuite/Field/CopyableTokenField.php | 2 +- source/packages/plg_system_mokosuite/mokosuite.xml | 2 +- source/packages/plg_system_mokosuite/script.php | 2 +- source/packages/plg_system_mokosuite/services/provider.php | 2 +- .../plg_system_mokosuite_devtools/mokosuite_devtools.xml | 2 +- .../plg_system_mokosuite_firewall/mokosuite_firewall.xml | 2 +- .../plg_system_mokosuite_license/mokosuite_license.xml | 2 +- .../plg_system_mokosuite_monitor/mokosuite_monitor.xml | 2 +- .../plg_system_mokosuite_offline/mokosuite_offline.xml | 2 +- .../packages/plg_system_mokosuite_tenant/mokosuite_tenant.xml | 2 +- .../packages/plg_task_mokosuite_tickets/mokosuite_tickets.xml | 2 +- source/packages/plg_task_mokosuitedemo/mokosuitedemo.xml | 2 +- .../plg_task_mokosuitedemo/src/Service/DemoResetService.php | 2 +- source/packages/plg_task_mokosuitesync/mokosuitesync.xml | 2 +- .../src/Service/ContentSyncReceiver.php | 2 +- .../plg_task_mokosuitesync/src/Service/ContentSyncService.php | 2 +- source/packages/plg_webservices_mokosuite/mokosuite.xml | 2 +- source/pkg_mokosuite.xml | 2 +- 43 files changed, 53 insertions(+), 53 deletions(-) diff --git a/.mokogitea/manifest.xml b/.mokogitea/manifest.xml index 6ad9ee30..e0b86bb1 100644 --- a/.mokogitea/manifest.xml +++ b/.mokogitea/manifest.xml @@ -9,7 +9,7 @@ Package - MokoSuite MokoConsulting White-label identity, security hardening, and tenant restriction layer for Suite-managed Joomla environments - 02.34.46 + 02.34.47 GNU General Public License v3 diff --git a/.mokogitea/workflows/issue-branch.yml b/.mokogitea/workflows/issue-branch.yml index 56a0d30b..9125ca15 100644 --- a/.mokogitea/workflows/issue-branch.yml +++ b/.mokogitea/workflows/issue-branch.yml @@ -5,7 +5,7 @@ # FILE INFORMATION # DEFGROUP: Gitea.Workflow # INGROUP: moko-platform.Automation -# VERSION: 02.34.46 +# VERSION: 02.34.47 # BRIEF: Auto-create feature branch when an issue is opened name: "Universal: Issue Branch" diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a6d2e0c..badd745e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ INGROUP: MokoSuite.Documentation REPO: https://github.com/mokoconsulting-tech/mokosuite PATH: ./CHANGELOG.md - VERSION: 02.34.46 + VERSION: 02.34.47 BRIEF: Version history using `Keep a Changelog` --> diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 7426cb1f..c5ace85a 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -14,7 +14,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Documentation REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.46 + VERSION: 02.34.47 PATH: ./CODE_OF_CONDUCT.md BRIEF: Reference + packaging repo for Moko Consulting Developer GPT Other Default --> diff --git a/GOVERNANCE.md b/GOVERNANCE.md index bbae6ef6..9d799053 100644 --- a/GOVERNANCE.md +++ b/GOVERNANCE.md @@ -19,7 +19,7 @@ DEFGROUP: mokoconsulting-tech.MokoSuiteBrand INGROUP: MokoStandards.Governance REPO: https://github.com/mokoconsulting-tech/MokoSuiteBrand - VERSION: 02.34.46 + VERSION: 02.34.47 PATH: /GOVERNANCE.md BRIEF: Project governance rules, roles, and decision process for MokoSuiteBrand --> diff --git a/LICENSE.md b/LICENSE.md index d87d12d0..1890528a 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -15,7 +15,7 @@ INGROUP: MokoSuite.Documentation REPO: https://github.com/mokoconsulting-tech/mokosuite PATH: ./LICENSE.md - VERSION: 02.34.46 + VERSION: 02.34.47 BRIEF: Project license (GPL-3.0-or-later) --> GNU GENERAL PUBLIC LICENSE diff --git a/README.md b/README.md index bcae1205..30b44bc2 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoSuite - VERSION: 02.34.46 + VERSION: 02.34.47 PATH: /README.md BRIEF: MokoSuite platform plugin for Joomla --> diff --git a/SECURITY.md b/SECURITY.md index b2a0f710..2f1af93b 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -23,7 +23,7 @@ DEFGROUP: [PROJECT_NAME] INGROUP: [PROJECT_NAME].Documentation REPO: [REPOSITORY_URL] PATH: /SECURITY.md -VERSION: 02.34.46 +VERSION: 02.34.47 BRIEF: Security vulnerability reporting and handling policy --> diff --git a/docs/guides/build-guide.md b/docs/guides/build-guide.md index c5aae855..c86e27cd 100644 --- a/docs/guides/build-guide.md +++ b/docs/guides/build-guide.md @@ -11,13 +11,13 @@ INGROUP: MokoSuite.Build REPO: https://github.com/mokoconsulting-tech/mokosuite FILE: build-guide.md - VERSION: 02.34.46 + VERSION: 02.34.47 PATH: /docs/guides/ BRIEF: Build and packaging guide for the MokoSuite system plugin NOTE: Defines environment setup, repository layout, packaging rules, and release preparation --> -# MokoSuite Build Guide (VERSION: 02.34.46) +# MokoSuite Build Guide (VERSION: 02.34.47) ## 1. Purpose diff --git a/docs/guides/configuration-guide.md b/docs/guides/configuration-guide.md index 42f4149f..08507d1f 100644 --- a/docs/guides/configuration-guide.md +++ b/docs/guides/configuration-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.46 + VERSION: 02.34.47 PATH: /docs/guides/configuration-guide.md BRIEF: Configuration guide for the MokoSuite system plugin NOTE: Defines plugin parameters, expected behaviors, and recommended defaults --> -# MokoSuite Configuration Guide (VERSION: 02.34.46) +# MokoSuite Configuration Guide (VERSION: 02.34.47) ## 1. Objective diff --git a/docs/guides/installation-guide.md b/docs/guides/installation-guide.md index 28b39bcd..f0201996 100644 --- a/docs/guides/installation-guide.md +++ b/docs/guides/installation-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.46 + VERSION: 02.34.47 PATH: /docs/guides/installation-guide.md BRIEF: Installation guide for the MokoSuite system plugin NOTE: First document in the guide set --> -# MokoSuite Installation Guide (VERSION: 02.34.46) +# MokoSuite Installation Guide (VERSION: 02.34.47) ## Introduction diff --git a/docs/guides/operations-guide.md b/docs/guides/operations-guide.md index 46af21bd..d403d99f 100644 --- a/docs/guides/operations-guide.md +++ b/docs/guides/operations-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.46 + VERSION: 02.34.47 PATH: /docs/guides/operations-guide.md BRIEF: Operational guide for administering and managing the MokoSuite system plugin NOTE: Defines lifecycle, responsibilities, and operational behaviors --> -# MokoSuite Operations Guide (VERSION: 02.34.46) +# MokoSuite Operations Guide (VERSION: 02.34.47) ## Introduction diff --git a/docs/guides/rollback-and-recovery-guide.md b/docs/guides/rollback-and-recovery-guide.md index 2e47d81b..18d43d70 100644 --- a/docs/guides/rollback-and-recovery-guide.md +++ b/docs/guides/rollback-and-recovery-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.46 + VERSION: 02.34.47 PATH: /docs/guides/rollback-and-recovery-guide.md BRIEF: Rollback and recovery guide for restoring stable operation after plugin related incidents NOTE: Completes the core guide set for Suite plugin governance --> -# MokoSuite Rollback and Recovery Guide (VERSION: 02.34.46) +# MokoSuite Rollback and Recovery Guide (VERSION: 02.34.47) ## Introduction diff --git a/docs/guides/testing-guide.md b/docs/guides/testing-guide.md index 1fbffc68..0de42706 100644 --- a/docs/guides/testing-guide.md +++ b/docs/guides/testing-guide.md @@ -7,13 +7,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.46 + VERSION: 02.34.47 PATH: /docs/guides/testing-guide.md BRIEF: Testing guide for MokoSuite v02.01.08 NOTE: Covers manual test procedures for language overrides, install/uninstall, and configuration --> -# MokoSuite Testing Guide (VERSION: 02.34.46) +# MokoSuite Testing Guide (VERSION: 02.34.47) ## 1. Prerequisites diff --git a/docs/guides/troubleshooting-guide.md b/docs/guides/troubleshooting-guide.md index 9627402b..01622e1a 100644 --- a/docs/guides/troubleshooting-guide.md +++ b/docs/guides/troubleshooting-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.46 + VERSION: 02.34.47 PATH: /docs/guides/troubleshooting-guide.md BRIEF: Troubleshooting guide for diagnosing and resolving issues related to the MokoSuite plugin NOTE: Designed for administrators and Suite operations teams --> -# MokoSuite Troubleshooting Guide (VERSION: 02.34.46) +# MokoSuite Troubleshooting Guide (VERSION: 02.34.47) ## Introduction diff --git a/docs/guides/upgrade-and-versioning-guide.md b/docs/guides/upgrade-and-versioning-guide.md index 05c4bd04..8b094c45 100644 --- a/docs/guides/upgrade-and-versioning-guide.md +++ b/docs/guides/upgrade-and-versioning-guide.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Guides REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.46 + VERSION: 02.34.47 PATH: /docs/guides/upgrade-and-versioning-guide.md BRIEF: Guide for updating, versioning, and maintaining the MokoSuite plugin NOTE: Defines release flow, version rules, and upgrade validation --> -# MokoSuite Upgrade and Versioning Guide (VERSION: 02.34.46) +# MokoSuite Upgrade and Versioning Guide (VERSION: 02.34.47) ## Introduction diff --git a/docs/index.md b/docs/index.md index 1469de0a..49d01d71 100644 --- a/docs/index.md +++ b/docs/index.md @@ -10,13 +10,13 @@ DEFGROUP: Joomla.Plugin INGROUP: MokoSuite.Documentation REPO: https://github.com/mokoconsulting-tech/mokosuite - VERSION: 02.34.46 + VERSION: 02.34.47 PATH: /docs/index.md BRIEF: Master index of all documentation for the MokoSuite plugin NOTE: Automatically maintained index for all guide canvases --> -# MokoSuite Documentation Index (VERSION: 02.34.46) +# MokoSuite Documentation Index (VERSION: 02.34.47) ## Introduction diff --git a/docs/plugin-basic.md b/docs/plugin-basic.md index 7a7a5bd0..e51e78ce 100644 --- a/docs/plugin-basic.md +++ b/docs/plugin-basic.md @@ -11,12 +11,12 @@ INGROUP: MokoSuite REPO: https://github.com/mokoconsulting-tech/mokosuite PATH: /docs/plugin-basic.md - VERSION: 02.34.46 + VERSION: 02.34.47 BRIEF: Baseline documentation for the MokoSuite system plugin NOTE: Foundational reference for internal and external stakeholders --> -# MokoSuite Plugin Overview (VERSION: 02.34.46) +# MokoSuite Plugin Overview (VERSION: 02.34.47) ## Introduction diff --git a/docs/update-server.md b/docs/update-server.md index ab836bc7..f33bf73c 100644 --- a/docs/update-server.md +++ b/docs/update-server.md @@ -10,7 +10,7 @@ DEFGROUP: MokoSuite.Documentation INGROUP: MokoStandards.Templates REPO: https://github.com/mokoconsulting-tech/MokoSuite PATH: /docs/update-server.md -VERSION: 02.34.46 +VERSION: 02.34.47 BRIEF: How this extension's Joomla update server file (update.xml) is managed --> diff --git a/source/packages/com_mokosuite/mokosuite.xml b/source/packages/com_mokosuite/mokosuite.xml index 95105376..c8071da3 100644 --- a/source/packages/com_mokosuite/mokosuite.xml +++ b/source/packages/com_mokosuite/mokosuite.xml @@ -20,7 +20,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.46-dev + 02.34.47-dev MokoSuite admin dashboard and REST API. Provides a control panel for managing MokoSuite feature plugins, site health monitoring, and remote management endpoints. Moko\Component\MokoSuite diff --git a/source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml b/source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml index 963c3793..12c7eba0 100644 --- a/source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml +++ b/source/packages/mod_mokosuite_cache/mod_mokosuite_cache.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.46-dev + 02.34.47-dev MOD_MOKOSUITE_CACHE_DESC Moko\Module\MokoSuiteCache diff --git a/source/packages/mod_mokosuite_categories/mod_mokosuite_categories.xml b/source/packages/mod_mokosuite_categories/mod_mokosuite_categories.xml index 9f059f73..3d64b985 100644 --- a/source/packages/mod_mokosuite_categories/mod_mokosuite_categories.xml +++ b/source/packages/mod_mokosuite_categories/mod_mokosuite_categories.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.46-dev + 02.34.47-dev MOD_MOKOSUITE_CATEGORIES_DESC Moko\Module\MokoSuiteCategories diff --git a/source/packages/mod_mokosuite_cpanel/mod_mokosuite_cpanel.xml b/source/packages/mod_mokosuite_cpanel/mod_mokosuite_cpanel.xml index 473ff02f..6347f3df 100644 --- a/source/packages/mod_mokosuite_cpanel/mod_mokosuite_cpanel.xml +++ b/source/packages/mod_mokosuite_cpanel/mod_mokosuite_cpanel.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.46-dev + 02.34.47-dev MOD_MOKOSUITE_CPANEL_DESC Moko\Module\MokoSuiteCpanel diff --git a/source/packages/mod_mokosuite_menu/mod_mokosuite_menu.xml b/source/packages/mod_mokosuite_menu/mod_mokosuite_menu.xml index 69fc9ec2..85c257e6 100644 --- a/source/packages/mod_mokosuite_menu/mod_mokosuite_menu.xml +++ b/source/packages/mod_mokosuite_menu/mod_mokosuite_menu.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.46-dev + 02.34.47-dev MokoSuite admin sidebar menu — renders a dedicated MokoSuite section in the admin menu before Joomla's default menu. Moko\Module\MokoSuiteMenu diff --git a/source/packages/plg_system_mokosuite/Extension/MokoSuite.php b/source/packages/plg_system_mokosuite/Extension/MokoSuite.php index d92d03c5..8b5308f4 100644 --- a/source/packages/plg_system_mokosuite/Extension/MokoSuite.php +++ b/source/packages/plg_system_mokosuite/Extension/MokoSuite.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoSuite * REPO: https://github.com/mokoconsulting-tech/mokosuite - * VERSION: 02.34.46 + * VERSION: 02.34.47 * PATH: /src/Extension/MokoSuite.php * NOTE: Core system plugin for MokoSuite admin tools suite */ diff --git a/source/packages/plg_system_mokosuite/Field/CopyableTokenField.php b/source/packages/plg_system_mokosuite/Field/CopyableTokenField.php index c31a9d2d..81ad6c2a 100644 --- a/source/packages/plg_system_mokosuite/Field/CopyableTokenField.php +++ b/source/packages/plg_system_mokosuite/Field/CopyableTokenField.php @@ -8,7 +8,7 @@ * FILE INFORMATION * DEFGROUP: Joomla.Plugin * INGROUP: MokoSuite - * VERSION: 02.34.46 + * VERSION: 02.34.47 * PATH: /src/Field/CopyableTokenField.php * BRIEF: Read-only token field with a copy-to-clipboard button */ diff --git a/source/packages/plg_system_mokosuite/mokosuite.xml b/source/packages/plg_system_mokosuite/mokosuite.xml index c618eb88..ad0f73cb 100644 --- a/source/packages/plg_system_mokosuite/mokosuite.xml +++ b/source/packages/plg_system_mokosuite/mokosuite.xml @@ -30,7 +30,7 @@ GNU General Public License version 3 or later; see LICENSE.md hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.46-dev + 02.34.47-dev MokoSuite core system plugin — coordinates feature plugins, heartbeat, health checks, and admin customizations. Moko\Plugin\System\MokoSuite script.php diff --git a/source/packages/plg_system_mokosuite/script.php b/source/packages/plg_system_mokosuite/script.php index 73185d8a..09a5567f 100644 --- a/source/packages/plg_system_mokosuite/script.php +++ b/source/packages/plg_system_mokosuite/script.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoSuite * REPO: https://github.com/mokoconsulting-tech/mokosuite - * VERSION: 02.34.46 + * VERSION: 02.34.47 * PATH: /src/script.php * BRIEF: Installation script for MokoSuite plugin * NOTE: Handles installation, update, and uninstallation tasks including language override deployment diff --git a/source/packages/plg_system_mokosuite/services/provider.php b/source/packages/plg_system_mokosuite/services/provider.php index 25528e5c..7cdd789f 100644 --- a/source/packages/plg_system_mokosuite/services/provider.php +++ b/source/packages/plg_system_mokosuite/services/provider.php @@ -22,7 +22,7 @@ * DEFGROUP: Joomla.Plugin * INGROUP: MokoSuite * REPO: https://github.com/mokoconsulting-tech/mokosuite - * VERSION: 02.34.46 + * VERSION: 02.34.47 * PATH: /src/services/provider.php * BRIEF: Service provider for dependency injection in Joomla 5.x * NOTE: Registers the plugin with Joomla's DI container diff --git a/source/packages/plg_system_mokosuite_devtools/mokosuite_devtools.xml b/source/packages/plg_system_mokosuite_devtools/mokosuite_devtools.xml index 52b9528a..4b2b42cb 100644 --- a/source/packages/plg_system_mokosuite_devtools/mokosuite_devtools.xml +++ b/source/packages/plg_system_mokosuite_devtools/mokosuite_devtools.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.46-dev + 02.34.47-dev PLG_SYSTEM_MOKOSUITE_DEVTOOLS_DESC Moko\Plugin\System\MokoSuiteDevTools diff --git a/source/packages/plg_system_mokosuite_firewall/mokosuite_firewall.xml b/source/packages/plg_system_mokosuite_firewall/mokosuite_firewall.xml index 90d79a74..3b7a7f9f 100644 --- a/source/packages/plg_system_mokosuite_firewall/mokosuite_firewall.xml +++ b/source/packages/plg_system_mokosuite_firewall/mokosuite_firewall.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.46-dev + 02.34.47-dev PLG_SYSTEM_MOKOSUITE_FIREWALL_DESC Moko\Plugin\System\MokoSuiteFirewall diff --git a/source/packages/plg_system_mokosuite_license/mokosuite_license.xml b/source/packages/plg_system_mokosuite_license/mokosuite_license.xml index 2d00ed98..2469657b 100644 --- a/source/packages/plg_system_mokosuite_license/mokosuite_license.xml +++ b/source/packages/plg_system_mokosuite_license/mokosuite_license.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.46-dev + 02.34.47-dev PLG_SYSTEM_MOKOSUITE_LICENSE_DESC Moko\Plugin\System\MokoSuiteLicense srcserviceslanguage diff --git a/source/packages/plg_system_mokosuite_monitor/mokosuite_monitor.xml b/source/packages/plg_system_mokosuite_monitor/mokosuite_monitor.xml index fcea5da4..633a4725 100644 --- a/source/packages/plg_system_mokosuite_monitor/mokosuite_monitor.xml +++ b/source/packages/plg_system_mokosuite_monitor/mokosuite_monitor.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.46-dev + 02.34.47-dev PLG_SYSTEM_MOKOSUITE_MONITOR_DESC Moko\Plugin\System\MokoSuiteMonitor diff --git a/source/packages/plg_system_mokosuite_offline/mokosuite_offline.xml b/source/packages/plg_system_mokosuite_offline/mokosuite_offline.xml index 896fbc67..18065ec4 100644 --- a/source/packages/plg_system_mokosuite_offline/mokosuite_offline.xml +++ b/source/packages/plg_system_mokosuite_offline/mokosuite_offline.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.46-dev + 02.34.47-dev PLG_SYSTEM_MOKOSUITE_OFFLINE_DESC Moko\Plugin\System\MokoSuiteOffline diff --git a/source/packages/plg_system_mokosuite_tenant/mokosuite_tenant.xml b/source/packages/plg_system_mokosuite_tenant/mokosuite_tenant.xml index 7c090575..4697633d 100644 --- a/source/packages/plg_system_mokosuite_tenant/mokosuite_tenant.xml +++ b/source/packages/plg_system_mokosuite_tenant/mokosuite_tenant.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.46-dev + 02.34.47-dev PLG_SYSTEM_MOKOSUITE_TENANT_DESC Moko\Plugin\System\MokoSuiteTenant diff --git a/source/packages/plg_task_mokosuite_tickets/mokosuite_tickets.xml b/source/packages/plg_task_mokosuite_tickets/mokosuite_tickets.xml index b9b84072..a1818867 100644 --- a/source/packages/plg_task_mokosuite_tickets/mokosuite_tickets.xml +++ b/source/packages/plg_task_mokosuite_tickets/mokosuite_tickets.xml @@ -8,7 +8,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.46-dev + 02.34.47-dev Runs scheduled helpdesk automation rules — auto-close resolved tickets, SLA breach escalation, and time-based actions. Moko\Plugin\Task\MokoSuiteTickets diff --git a/source/packages/plg_task_mokosuitedemo/mokosuitedemo.xml b/source/packages/plg_task_mokosuitedemo/mokosuitedemo.xml index bf56588f..58d4d2ed 100644 --- a/source/packages/plg_task_mokosuitedemo/mokosuitedemo.xml +++ b/source/packages/plg_task_mokosuitedemo/mokosuitedemo.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.46-dev + 02.34.47-dev PLG_TASK_MOKOSUITEDEMO_DESC Moko\Plugin\Task\MokoSuiteDemo diff --git a/source/packages/plg_task_mokosuitedemo/src/Service/DemoResetService.php b/source/packages/plg_task_mokosuitedemo/src/Service/DemoResetService.php index 8e73bebe..b535b268 100644 --- a/source/packages/plg_task_mokosuitedemo/src/Service/DemoResetService.php +++ b/source/packages/plg_task_mokosuitedemo/src/Service/DemoResetService.php @@ -10,7 +10,7 @@ * INGROUP: MokoSuite * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoSuite * PATH: /src/packages/plg_system_mokosuite/Service/DemoResetService.php - * VERSION: 02.34.46 + * VERSION: 02.34.47 * BRIEF: Content-only snapshot/restore for demo site reset */ diff --git a/source/packages/plg_task_mokosuitesync/mokosuitesync.xml b/source/packages/plg_task_mokosuitesync/mokosuitesync.xml index eb860bc2..a9cf6954 100644 --- a/source/packages/plg_task_mokosuitesync/mokosuitesync.xml +++ b/source/packages/plg_task_mokosuitesync/mokosuitesync.xml @@ -12,7 +12,7 @@ GNU General Public License version 3 or later; see LICENSE hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.46-dev + 02.34.47-dev PLG_TASK_MOKOSUITESYNC_DESC Moko\Plugin\Task\MokoSuiteSync diff --git a/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncReceiver.php b/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncReceiver.php index 6b8cbc80..20a6cca4 100644 --- a/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncReceiver.php +++ b/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncReceiver.php @@ -10,7 +10,7 @@ * INGROUP: MokoSuite * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoSuite * PATH: /src/packages/plg_system_mokosuite/Service/ContentSyncReceiver.php - * VERSION: 02.34.46 + * VERSION: 02.34.47 * BRIEF: Receiver-side content sync — applies incoming payload to local DB */ diff --git a/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncService.php b/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncService.php index 301f7693..eb59b904 100644 --- a/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncService.php +++ b/source/packages/plg_task_mokosuitesync/src/Service/ContentSyncService.php @@ -10,7 +10,7 @@ * INGROUP: MokoSuite * REPO: https://git.mokoconsulting.tech/MokoConsulting/MokoSuite * PATH: /src/packages/plg_system_mokosuite/Service/ContentSyncService.php - * VERSION: 02.34.46 + * VERSION: 02.34.47 * BRIEF: Sender-side content sync — builds payload and pushes to remote sites */ diff --git a/source/packages/plg_webservices_mokosuite/mokosuite.xml b/source/packages/plg_webservices_mokosuite/mokosuite.xml index a5e4816f..3b9b8932 100644 --- a/source/packages/plg_webservices_mokosuite/mokosuite.xml +++ b/source/packages/plg_webservices_mokosuite/mokosuite.xml @@ -7,7 +7,7 @@ GPL-3.0-or-later hello@mokoconsulting.tech https://mokoconsulting.tech - 02.34.46-dev + 02.34.47-dev Joomla Web Services API routes for MokoSuite site management — health checks, cache, updates, backups, and site info. Moko\Plugin\WebServices\MokoSuite diff --git a/source/pkg_mokosuite.xml b/source/pkg_mokosuite.xml index 3b3735a8..4f14b29c 100644 --- a/source/pkg_mokosuite.xml +++ b/source/pkg_mokosuite.xml @@ -2,7 +2,7 @@ Package - MokoSuite mokosuite - 02.34.46-dev + 02.34.47-dev 2026-06-02 Moko Consulting hello@mokoconsulting.tech
Statusstatus)); ?>
Prioritypriority); ?>
Statusescape($t->status_title ?? $t->status); ?>
Priorityescape($t->priority_title ?? $t->priority); ?>
Categoryescape($t->category_title ?? '—'); ?>
Created Byescape($t->created_by_name); ?>
escape($t->created_by_email ?? ''); ?>
Assigned To
Actions
- 'Reopen', 'in_progress' => 'In Progress', 'waiting' => 'Waiting', 'resolved' => 'Resolve', 'closed' => 'Close'] as $s => $label): ?> - status): ?> -
+ + + customFields)): ?> +
+
Custom Fields
+
+ + customFields as $field): ?> + + + + + +
escape($field->title); ?>escape($this->fieldValues[(int) $field->id] ?? '—'); ?>
+
+
+ diff --git a/source/packages/com_mokosuite/admin/tmpl/tickets/default.php b/source/packages/com_mokosuite/admin/tmpl/tickets/default.php index eb479b54..154ebf68 100644 --- a/source/packages/com_mokosuite/admin/tmpl/tickets/default.php +++ b/source/packages/com_mokosuite/admin/tmpl/tickets/default.php @@ -9,25 +9,12 @@ use Joomla\CMS\Session\Session; $tickets = $this->tickets; $categories = $this->categories; +$statuses = $this->statuses; +$priorities = $this->priorities; $counts = $this->statusCounts; $overdue = $this->overdue; $atsAvailable = $this->atsAvailable; $token = Session::getFormToken(); - -$statusBadge = [ - 'open' => 'bg-primary', - 'in_progress' => 'bg-info', - 'waiting' => 'bg-warning text-dark', - 'resolved' => 'bg-success', - 'closed' => 'bg-secondary', -]; - -$priorityBadge = [ - 'low' => 'bg-secondary', - 'normal' => 'bg-primary', - 'high' => 'bg-warning text-dark', - 'urgent' => 'bg-danger', -]; ?>
@@ -64,14 +51,14 @@ $priorityBadge = [ @@ -110,8 +97,8 @@ $priorityBadge = [
id; ?> escape(mb_substr($t->subject, 0, 60)); ?>status)); ?>priority); ?>escape($t->status_title ?? $t->status); ?>escape($t->priority_title ?? $t->priority); ?> escape($t->category_title ?? '—'); ?> contact_name ? '' . $this->escape($t->contact_name) . '' : '—'; ?> escape($t->created_by_name ?? ''); ?>