From bf2b01df2d254d6a231f259bbcf5d064f0b07483 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Mon, 25 May 2026 21:08:33 -0500 Subject: [PATCH 1/5] fix(ci): use absolute paths in package build step Relative path ../../build/package/ broke when cd'd 3 levels deep into src/packages/ext_name/. Now captures REPO_ROOT=$(pwd) and uses it for zip output and cd back. Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) --- .mokogitea/workflows/pre-release.yml | 6 ++++-- CHANGELOG.md | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.mokogitea/workflows/pre-release.yml b/.mokogitea/workflows/pre-release.yml index 44d3de6..36b73ae 100644 --- a/.mokogitea/workflows/pre-release.yml +++ b/.mokogitea/workflows/pre-release.yml @@ -177,6 +177,8 @@ jobs: mkdir -p build/package + REPO_ROOT=$(pwd) + if [ "$EXT_TYPE" = "package" ] && [ -d "${SOURCE_DIR}/packages" ]; then echo "=== Building Joomla PACKAGE (multi-extension) ===" for ext_dir in "${SOURCE_DIR}"/packages/*/; do @@ -184,8 +186,8 @@ jobs: EXT_NAME=$(basename "$ext_dir") echo " Packaging sub-extension: ${EXT_NAME}" cd "$ext_dir" - zip -r "../../build/package/${EXT_NAME}.zip" . -x $EXCLUDES - cd "$OLDPWD" + zip -r "${REPO_ROOT}/build/package/${EXT_NAME}.zip" . -x $EXCLUDES + cd "${REPO_ROOT}" done for f in "${SOURCE_DIR}"/*.xml "${SOURCE_DIR}"/*.php; do [ -f "$f" ] && cp "$f" build/package/ diff --git a/CHANGELOG.md b/CHANGELOG.md index 6816fc7..a8f2576 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Changed - CI: auto-release uses stream tag `stable` instead of version tag `vXX` +- CI: pre-release package build uses absolute paths (fixes relative path zip error) ## [02.05.00] - 2026-05-24 -- 2.52.0 From ea60ac60ba844dba2f03496caac5544f3d1bc8f4 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Mon, 25 May 2026 21:18:22 -0500 Subject: [PATCH 2/5] fix(ci): pre-release uses updates_xml_build CLI with preserve logic MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The inline PHP regex approach only updated existing entries — if no matching channel entry existed, nothing was added. Now uses the moko-platform CLI which creates new entries and preserves other channels. Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) --- .mokogitea/workflows/pre-release.yml | 37 +++++++++------------------- 1 file changed, 11 insertions(+), 26 deletions(-) diff --git a/.mokogitea/workflows/pre-release.yml b/.mokogitea/workflows/pre-release.yml index 36b73ae..01959e2 100644 --- a/.mokogitea/workflows/pre-release.yml +++ b/.mokogitea/workflows/pre-release.yml @@ -292,32 +292,17 @@ jobs: DOWNLOAD_URL="${GITEA_URL}/${GITEA_ORG}/${GITEA_REPO}/releases/download/${TAG}/${ZIP_NAME}" - # Use PHP to update the channel in updates.xml - php -r ' - $xml_tag = $argv[1]; - $version = $argv[2]; - $sha256 = $argv[3]; - $url = $argv[4]; - $date = date("Y-m-d"); - - $content = file_get_contents("updates.xml"); - $pattern = "/((?:(?!<\/update>).)*?" . preg_quote($xml_tag) . "<\/tag>.*?<\/update>)/s"; - - $content = preg_replace_callback($pattern, function($m) use ($version, $sha256, $url, $date) { - $block = $m[0]; - $block = preg_replace("/[^<]*<\/version>/", "{$version}", $block); - if (strpos($block, "") !== false) { - $block = preg_replace("/[^<]*<\/sha256>/", "{$sha256}", $block); - } else { - $block = str_replace("", "\n {$sha256}", $block); - } - $block = preg_replace("/(]*>)[^<]*(<\/downloadurl>)/", "\${1}{$url}\${2}", $block); - return $block; - }, $content); - - file_put_contents("updates.xml", $content); - echo "Updated {$xml_tag} channel: version={$version}\n"; - ' "$XML_TAG" "$VERSION" "$SHA256" "$DOWNLOAD_URL" + # Use moko-platform CLI to build/update updates.xml (preserves other channels) + MOKO_CLI="/tmp/moko-platform-api/cli" + if [ -f "${MOKO_CLI}/updates_xml_build.php" ]; then + php "${MOKO_CLI}/updates_xml_build.php" \ + --path . --version "${VERSION}" --stability "${STABILITY}" \ + --sha "${SHA256}" \ + --gitea-url "${GITEA_URL}" --org "${GITEA_ORG}" --repo "${GITEA_REPO}" + echo "Updated ${STABILITY} channel via CLI: version=${VERSION}" + else + echo "WARNING: updates_xml_build.php not found — skipping" + fi # Commit and push if ! git diff --quiet updates.xml 2>/dev/null; then -- 2.52.0 From 3edec0687c3330a3c9f6706abb677fffa4b01f57 Mon Sep 17 00:00:00 2001 From: Jonathan Miller Date: Mon, 25 May 2026 21:33:53 -0500 Subject: [PATCH 3/5] fix: re-enable update site disabled by Joomla's protected flag Joomla automatically disables update sites for extensions with protected=1. ensureProtectedFlag() now also checks and re-enables the MokoWaaS update site each admin session. Authored-by: Moko Consulting Co-Authored-By: Claude Opus 4.6 (1M context) --- CHANGELOG.md | 1 + .../plg_system_mokowaas/Extension/MokoWaaS.php | 14 ++++++++++++++ 2 files changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a8f2576..ebe4d9e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,6 +41,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - Install API endpoint: extract ZIP to temp directory before passing to Joomla Installer (was passing ZIP path directly) - Clean up extracted temp directory on success or failure +- Update site disabled by Joomla when protected=1 — ensureProtectedFlag() now re-enables it ### Changed - CI: auto-release uses stream tag `stable` instead of version tag `vXX` diff --git a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php index 698bb8b..eb5f2c3 100644 --- a/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php +++ b/src/packages/plg_system_mokowaas/Extension/MokoWaaS.php @@ -1067,6 +1067,8 @@ class MokoWaaS extends CMSPlugin try { $db = Factory::getDbo(); + + // Set protected=1, locked=0 on MokoWaaS extensions $query = $db->getQuery(true) ->update($db->quoteName('#__extensions')) ->set($db->quoteName('protected') . ' = 1') @@ -1076,6 +1078,18 @@ class MokoWaaS extends CMSPlugin ->where($db->quoteName('protected') . ' = 0'); $db->setQuery($query); $db->execute(); + + // Ensure update site stays enabled (protected extensions get their update site disabled by Joomla) + $query = $db->getQuery(true) + ->update($db->quoteName('#__update_sites') . ' AS us') + ->join('INNER', $db->quoteName('#__update_sites_extensions') . ' AS use2 ON us.update_site_id = use2.update_site_id') + ->join('INNER', $db->quoteName('#__extensions') . ' AS e ON use2.extension_id = e.extension_id') + ->set('us.enabled = 1') + ->where('us.enabled = 0') + ->where('(' . $db->quoteName('e.element') . ' = ' . $db->quote('mokowaas') + . ' OR ' . $db->quoteName('e.element') . ' = ' . $db->quote('pkg_mokowaas') . ')'); + $db->setQuery($query); + $db->execute(); } catch (\Throwable $e) { -- 2.52.0 From b5e8d3dfe27394f2108c88d8f3f1e4194ab0fece Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Tue, 26 May 2026 02:34:04 +0000 Subject: [PATCH 4/5] chore(version): auto-bump patch 02.05.05 [skip ci] --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f12d937..5f88f88 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.05.04 + VERSION: 02.05.05 PATH: /README.md BRIEF: MokoWaaS platform plugin for Joomla --> -- 2.52.0 From 6f69af666f04677bdd7d6fa812cfb5fbca50e627 Mon Sep 17 00:00:00 2001 From: "gitea-actions[bot]" Date: Tue, 26 May 2026 02:34:05 +0000 Subject: [PATCH 5/5] chore: update updates.xml (development: 02.05.05-dev) [skip ci] --- updates.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/updates.xml b/updates.xml index 027d37d..c50de7e 100644 --- a/updates.xml +++ b/updates.xml @@ -10,13 +10,13 @@ MokoWaaS development build. pkg_mokowaas package - 02.05.04 + 02.05.05 2026-05-26 https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/tag/development - https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/development/pkg_mokowaas-02.05.04-dev.zip + https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/releases/download/development/pkg_mokowaas-02.05.05-dev.zip - 104f27fc07783d65f050da3e28be4870ff4f566aff1bb01a446441b0dd8c55bb + e36db7e5ec612fb32c9a16d707c46a7d108f2c1b28c00df416df5bb4e58b7da4 development Moko Consulting https://mokoconsulting.tech -- 2.52.0