- Rename templates/mokocassiopeia → mokoonyx
- Rename media/templates/site/mokocassiopeia → mokoonyx
- Update #__extensions element and name
- Update #__template_styles template, title, and params
- Update #__menu link references
- Update #__update_sites to point to MokoOnyx updates.xml
- Clear #__updates cached entries for old extension
- No HTTP requests, no ZIP downloads, no Installer conflicts
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Remove hardcoded RELEASE_URL, discover from updates.xml stable channel
- Add discoverStableUrl() to parse MokoOnyx updates.xml at runtime
- Extract httpGet() helper for reuse across download + XML fetch
- Remove bridge call from update() — postflight() handles it
- Always targets stable channel for production-safe installs
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1. Download & install MokoOnyx from Gitea release
2. Copy user files (custom themes, user.css/js) to MokoOnyx
3. Migrate template styles with params
Fallback: if download fails, copy user files only (MokoOnyx must be
installed manually)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Instead of copying/renaming files, the bridge now:
1. Downloads mokoonyx ZIP from Gitea releases
2. Installs via Joomla's Installer (proper extension registration)
3. Migrates template styles and default assignment
4. Falls back gracefully with manual install link if download fails
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Joomla's update system compares hash_file() output (raw hex) against
the <sha256> element value. The sha256: prefix caused mismatch.
Also adds bridge migration helper for future MokoOnyx rename.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>