Joomla stores packages as pkg_elementname in #__extensions. The element
tag in updates.xml must match for the updater to find the extension.
The ZIP filename uses the same prefix (already correct), but the XML
element tag was using the stripped name.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Was cascading entries for all lower channels on stable release,
producing wrong download URLs for non-existent channel releases.
Now writes only the entry for the current stability level;
the preserve logic retains entries from other channels.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The complex regex ((5.[0-9])|(6.[0-9])) caused Gitea's web view to
return 500 when rendering the XML. Simplified to (5|6)\..* which is
Joomla-compatible and XML-safe.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
When building a dev release, the CLI was overwriting the entire
updates.xml with only the dev entry, wiping the stable channel.
Now reads existing entries and preserves channels not being updated.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Same duplication bug as joomla_build.php — uses <packagename> for
packages and strips existing type prefixes before prepending.
Authored-by: Moko Consulting
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The release tag is 'development' but the CLI was generating download
URLs with tag 'dev', causing Joomla update downloads to 404.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>