diff --git a/README.md b/README.md
index 3fd587d..c18e87a 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@ DEFGROUP: MokoStandards.Root
INGROUP: MokoStandards
REPO: https://git.mokoconsulting.tech/MokoConsulting/moko-platform
PATH: /README.md
-VERSION: 09.04.00
+VERSION: 09.04.03
BRIEF: Project overview and documentation
-->
diff --git a/cli/joomla_release.php b/cli/joomla_release.php
index 403da57..d57905e 100644
--- a/cli/joomla_release.php
+++ b/cli/joomla_release.php
@@ -149,10 +149,11 @@ class JoomlaRelease extends CliFramework
}
// ── Step 4: Upload to GitHub Release ──────────────────────────
- $repoFullName = self::ORG . '/' . ($repo ?: basename($path));
+ $repoFullName = self::ORG . '/' . ($repo ?: basename(realpath($path) ?: $path));
if (!$dryRun) {
- $this->ensureRelease($repoFullName, $releaseTag, $displayVersion, $stability);
+ $packageName = "{$prefix}{$meta['element']}-{$displayVersion}";
+ $this->ensureRelease($repoFullName, $releaseTag, $displayVersion, $stability, $meta['name'], $packageName);
$this->uploadAsset($repoFullName, $releaseTag, $zipPath, $zipName);
$this->uploadAsset($repoFullName, $releaseTag, $tarPath, $tarName);
$this->log('SUCCESS', "Uploaded to release: {$releaseTag}");
@@ -367,14 +368,17 @@ class JoomlaRelease extends CliFramework
// ── GitHub Release ───────────────────────────────────────────────
- private function ensureRelease(string $repo, string $tag, string $version, string $stability): void
+ private function ensureRelease(string $repo, string $tag, string $version, string $stability, string $extName = '', string $packageName = ''): void
{
+ $releaseName = $extName !== ''
+ ? "{$extName} {$version} ({$packageName})"
+ : (($stability === 'stable') ? "v" . explode('.', $version)[0] . " (latest: {$version})" : "{$tag} ({$version})");
try {
$this->api->get("/repos/{$repo}/releases/tags/{$tag}");
} catch (\Exception $e) {
$this->api->post("/repos/{$repo}/releases", [
'tag_name' => $tag,
- 'name' => ($stability === 'stable') ? "v" . explode('.', $version)[0] . " (latest: {$version})" : "{$tag} ({$version})",
+ 'name' => $releaseName,
'body' => "## {$version}\n\nCreated by MokoStandards release pipeline.",
'prerelease' => ($stability !== 'stable'),
]);
diff --git a/cli/updates_xml_build.php b/cli/updates_xml_build.php
index fb46371..c7b3435 100644
--- a/cli/updates_xml_build.php
+++ b/cli/updates_xml_build.php
@@ -374,13 +374,12 @@ function buildEntry(
$lines[] = " {$displayName}";
$lines[] = " {$displayName} {$stabilityLabel} build.";
// Element in updates.xml must match what Joomla stores in #__extensions.
- // Plugins are stored as bare element (folder handles grouping).
- // All other types need their prefix: mod_, com_, tpl_, pkg_, lib_.
+ // Plugins and templates are stored as bare element (no prefix).
+ // Other types need their prefix: mod_, com_, pkg_, lib_.
$prefixMap = [
'package' => 'pkg_',
'module' => 'mod_',
'component' => 'com_',
- 'template' => 'tpl_',
'library' => 'lib_',
];
$dbElement = isset($prefixMap[$extType]) ? $prefixMap[$extType] . $extElement : $extElement;