From 012f8adc3d26989e34c6aacd017e30e52fc2cf72 Mon Sep 17 00:00:00 2001
From: Jonathan Miller <1+jmiller@noreply.git.mokoconsulting.tech>
Date: Thu, 4 Jun 2026 13:15:19 +0000
Subject: [PATCH 1/3] chore: sync updates.xml 01.08.00 from main [skip ci]
---
updates.xml | 28 ++++++++++++++--------------
1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/updates.xml b/updates.xml
index 8e97f05..17001d0 100644
--- a/updates.xml
+++ b/updates.xml
@@ -1,7 +1,7 @@
@@ -87,34 +87,34 @@
site
01.08.00-rc
2026-06-04
- https://git.mokoconsulting.tech/MokoConsulting/MokoJoomHero/releases/tag/release-candidate
+ https://git.mokoconsulting.tech/MokoConsulting/MokoJoomHero/releases/tag/release-candidate
- https://git.mokoconsulting.tech/MokoConsulting/MokoJoomHero/releases/download/release-candidate/pkg_mokojoomhero-01.08.00-rc.zip
+ https://git.mokoconsulting.tech/MokoConsulting/MokoJoomHero/releases/download/release-candidate/pkg_mokojoomhero-01.08.00-rc.zip
2667e2c0c9b610288232dbb2d9d9ce7aba0c58174b32eb023a4349905cee635a
rc
https://git.mokoconsulting.tech/MokoConsulting/MokoJoomHero/raw/branch/main/CHANGELOG.md
Moko Consulting
https://mokoconsulting.tech
-
+
- Module - MokoJoomHero
- Module - MokoJoomHero stable build.
- mod_mokojoomhero
- module
+ Package - MokoJoomHero
+ Package - MokoJoomHero stable build.
+ pkg_mokojoomhero
+ package
site
- 01.07.00
- 2026-05-30
- https://git.mokoconsulting.tech/MokoConsulting/MokoJoomHero/releases/tag/stable
+ 01.08.00
+ 2026-06-04
+ https://git.mokoconsulting.tech/MokoConsulting/MokoJoomHero/releases/tag/stable
- https://git.mokoconsulting.tech/MokoConsulting/MokoJoomHero/releases/download/stable/mod_mokojoomhero-01.07.00.zip
+ https://git.mokoconsulting.tech/MokoConsulting/MokoJoomHero/releases/download/stable/pkg_mokojoomhero-01.08.00.zip
- 56ae99ad18e12ee52c60298adef5983aef788fe867d3e3a36957b314ad7eb386
+ 111fef438f7c30a74019124134ed461e2b92f9db992c45eef7d5f63091a5e0d7
stable
https://git.mokoconsulting.tech/MokoConsulting/MokoJoomHero/raw/branch/main/CHANGELOG.md
Moko Consulting
https://mokoconsulting.tech
-
+
--
2.52.0
From 52e362a769514d5398d2db6b8728b22b6a8812ed Mon Sep 17 00:00:00 2001
From: Jonathan Miller
Date: Thu, 4 Jun 2026 09:14:20 -0500
Subject: [PATCH 2/3] feat: restore licensing system with free tier (no key
required)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Re-enable the system plugin license check with a LICENSE_TYPE constant.
Set to 'free' — check exits immediately with zero overhead. Change to
'pro' to enable download key validation. Update plugin descriptions
and CLAUDE.md to document the licensing model.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context)
---
CLAUDE.md | 3 +-
.../en-GB/plg_system_mokojoomhero.sys.ini | 2 +-
.../en-US/plg_system_mokojoomhero.sys.ini | 2 +-
.../src/Extension/MokoJoomHero.php | 77 ++++++++++++++++++-
4 files changed, 80 insertions(+), 4 deletions(-)
diff --git a/CLAUDE.md b/CLAUDE.md
index 0aa7ae7..e38f998 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -41,7 +41,8 @@ This is a Joomla **package** extension (`pkg_mokojoomhero`) containing two sub-e
- Works independently — no plugin dependency required
### plg_system_mokojoomhero (System Plugin)
-- Placeholder for future system-level features
+- License check — free tier (no key required), pro tier warns if download key missing
+- Controlled by `LICENSE_TYPE` constant ('free' or 'pro') in the Extension class
- Auto-enabled on package install via `pkg_script.php`
- Namespace: `Joomla\Plugin\System\MokoJoomHero`
diff --git a/src/packages/plg_system_mokojoomhero/language/en-GB/plg_system_mokojoomhero.sys.ini b/src/packages/plg_system_mokojoomhero/language/en-GB/plg_system_mokojoomhero.sys.ini
index e8e1ade..ceeaa13 100644
--- a/src/packages/plg_system_mokojoomhero/language/en-GB/plg_system_mokojoomhero.sys.ini
+++ b/src/packages/plg_system_mokojoomhero/language/en-GB/plg_system_mokojoomhero.sys.ini
@@ -2,4 +2,4 @@
; SPDX-License-Identifier: GPL-3.0-or-later
PLG_SYSTEM_MOKOJOOMHERO="System - MokoJoomHero"
-PLG_SYSTEM_MOKOJOOMHERO_DESCRIPTION="System plugin for MokoJoomHero"
+PLG_SYSTEM_MOKOJOOMHERO_DESCRIPTION="System plugin for MokoJoomHero — license and update management"
diff --git a/src/packages/plg_system_mokojoomhero/language/en-US/plg_system_mokojoomhero.sys.ini b/src/packages/plg_system_mokojoomhero/language/en-US/plg_system_mokojoomhero.sys.ini
index e8e1ade..ceeaa13 100644
--- a/src/packages/plg_system_mokojoomhero/language/en-US/plg_system_mokojoomhero.sys.ini
+++ b/src/packages/plg_system_mokojoomhero/language/en-US/plg_system_mokojoomhero.sys.ini
@@ -2,4 +2,4 @@
; SPDX-License-Identifier: GPL-3.0-or-later
PLG_SYSTEM_MOKOJOOMHERO="System - MokoJoomHero"
-PLG_SYSTEM_MOKOJOOMHERO_DESCRIPTION="System plugin for MokoJoomHero"
+PLG_SYSTEM_MOKOJOOMHERO_DESCRIPTION="System plugin for MokoJoomHero — license and update management"
diff --git a/src/packages/plg_system_mokojoomhero/src/Extension/MokoJoomHero.php b/src/packages/plg_system_mokojoomhero/src/Extension/MokoJoomHero.php
index 76adee4..8990c1b 100644
--- a/src/packages/plg_system_mokojoomhero/src/Extension/MokoJoomHero.php
+++ b/src/packages/plg_system_mokojoomhero/src/Extension/MokoJoomHero.php
@@ -13,13 +13,88 @@ namespace Joomla\Plugin\System\MokoJoomHero\Extension;
defined('_JEXEC') or die;
+use Joomla\CMS\Factory;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\Event\SubscriberInterface;
class MokoJoomHero extends CMSPlugin implements SubscriberInterface
{
+ /**
+ * License type: 'free' requires no key, 'pro' requires a valid download key.
+ */
+ private const LICENSE_TYPE = 'free';
+
public static function getSubscribedEvents(): array
{
- return [];
+ return [
+ 'onAfterRoute' => 'onAfterRoute',
+ ];
+ }
+
+ public function onAfterRoute(): void
+ {
+ $app = $this->getApplication();
+
+ if ($app->isClient('administrator')) {
+ $this->checkLicense();
+ }
+ }
+
+ /**
+ * Check license status once per session. Free tier requires no key.
+ * Pro tier warns if no valid download key is configured.
+ */
+ private function checkLicense(): void
+ {
+ if (self::LICENSE_TYPE === 'free') {
+ return;
+ }
+
+ $session = Factory::getSession();
+
+ if ($session->get('mokojoomhero.license_checked', false)) {
+ return;
+ }
+
+ $user = Factory::getUser();
+
+ if ($user->guest || !$user->authorise('core.manage')) {
+ return;
+ }
+
+ $session->set('mokojoomhero.license_checked', true);
+
+ try {
+ $db = Factory::getDbo();
+
+ $query = $db->getQuery(true)
+ ->select($db->quoteName('extra_query'))
+ ->from($db->quoteName('#__update_sites'))
+ ->where($db->quoteName('name') . ' = ' . $db->quote('MokoJoomHero Updates'))
+ ->setLimit(1);
+ $db->setQuery($query);
+ $extraQuery = (string) $db->loadResult();
+
+ if (!empty($extraQuery)) {
+ parse_str($extraQuery, $parsed);
+
+ if (!empty($parsed['dlid']) && preg_match('/^MOKO-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}-[A-Z0-9]{4}$/', $parsed['dlid'])) {
+ return;
+ }
+ }
+
+ $this->getApplication()->enqueueMessage(
+ 'MokoJoomHero — Download Key Required — '
+ . 'No download key is configured. Updates may not be available until a valid key is entered. '
+ . 'Go to System → Update Sites '
+ . 'and enter your download key (MOKO-XXXX-XXXX-XXXX-XXXX) for the MokoJoomHero update site.',
+ 'warning'
+ );
+ } catch (\RuntimeException $e) {
+ $this->getApplication()->getLogger()->warning(
+ 'MokoJoomHero license check failed: ' . $e->getMessage(),
+ ['exception' => $e]
+ );
+ }
}
}
--
2.52.0
From d22ba60eea8831ea1cdde3bfce0fb3b0ed778ad5 Mon Sep 17 00:00:00 2001
From: Jonathan Miller <1+jmiller@noreply.git.mokoconsulting.tech>
Date: Thu, 4 Jun 2026 14:20:08 +0000
Subject: [PATCH 3/3] chore: sync .mokogitea/workflows/auto-release.yml from
moko-platform [skip ci]
---
.mokogitea/workflows/auto-release.yml | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
diff --git a/.mokogitea/workflows/auto-release.yml b/.mokogitea/workflows/auto-release.yml
index 2325032..44a2d64 100644
--- a/.mokogitea/workflows/auto-release.yml
+++ b/.mokogitea/workflows/auto-release.yml
@@ -102,13 +102,14 @@ jobs:
run: |
php /tmp/moko-platform-api/cli/release_publish.php \
--path . --stability rc --bump minor --branch rc \
- --token "${{ secrets.MOKOGITEA_TOKEN }}"
+ --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 + lesser stream releases built, updates.xml synced" >> $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:
@@ -167,7 +168,8 @@ jobs:
run: |
php /tmp/moko-platform-api/cli/release_publish.php \
--path . --stability stable --bump minor --branch main \
- --token "${{ secrets.MOKOGITEA_TOKEN }}"
+ --token "${{ secrets.MOKOGITEA_TOKEN }}" \
+ --skip-update-stream
# -- STEP 9: Mirror to GitHub (stable only) --------------------------------
- name: "Step 9: Mirror release to GitHub"
--
2.52.0