feat(updates): built-in Joomla update server endpoint #245

Merged
jmiller merged 1 commits from feat/update-server into dev 2026-05-30 17:55:07 +00:00
Owner

Summary

Add GET /{owner}/{repo}/updates.xml that dynamically generates a Joomla-compatible update XML feed from repository releases.

What it does

  • Maps release tags to channels (stable/rc/beta/alpha/dev) based on tag naming
  • Finds .zip attachments for download URLs, falls back to source archive
  • Emits one entry per channel (latest release wins)
  • Publicly accessible for Joomla update clients (no auth required)
  • XML format matches the existing updates.xml structure used by the workflows

Phase 1 of #239

Future phases:

  • Phase 2: Dolibarr JSON endpoint + repo settings UI
  • Phase 3: License keys with org-level scope and stream binding
  • Phase 4: Key validation middleware on update/download endpoints
  • Phase 5: Auto-detect updates.xml, stop manual workflow commits

Test plan

  • Visit /{owner}/{repo}/updates.xml on a repo with releases
  • Verify XML structure matches Joomla update format
  • Verify channels are correctly mapped from tag names
  • Verify download URLs point to release attachments

Ref #239

@MokoBot (Claude Opus 4.6)

## Summary Add `GET /{owner}/{repo}/updates.xml` that dynamically generates a Joomla-compatible update XML feed from repository releases. ### What it does - Maps release tags to channels (stable/rc/beta/alpha/dev) based on tag naming - Finds .zip attachments for download URLs, falls back to source archive - Emits one entry per channel (latest release wins) - Publicly accessible for Joomla update clients (no auth required) - XML format matches the existing updates.xml structure used by the workflows ### Phase 1 of #239 Future phases: - Phase 2: Dolibarr JSON endpoint + repo settings UI - Phase 3: License keys with org-level scope and stream binding - Phase 4: Key validation middleware on update/download endpoints - Phase 5: Auto-detect updates.xml, stop manual workflow commits ## Test plan - [ ] Visit /{owner}/{repo}/updates.xml on a repo with releases - [ ] Verify XML structure matches Joomla update format - [ ] Verify channels are correctly mapped from tag names - [ ] Verify download URLs point to release attachments Ref #239 @MokoBot (Claude Opus 4.6)
jmiller added 1 commit 2026-05-30 17:55:01 +00:00
feat(updates): built-in Joomla update server endpoint
Branch Policy Check / Verify merge target (pull_request) Successful in 1s
Universal: PR Check / Branch Policy (pull_request) Successful in 1s
PR RC Release / Build RC Release (pull_request) Successful in 2s
Universal: PR Check / Validate PR (pull_request) Failing after 6s
Universal: Pre-Release / Build Pre-Release (${{ inputs.stability || 'development' }}) (pull_request) Successful in 1m4s
Universal: PR Check / Build RC Package (pull_request) Has been cancelled
6c06384966
Add GET /{owner}/{repo}/updates.xml that dynamically generates a
Joomla-compatible updates.xml from the repository's releases.

Features:
- Automatically maps release tags to channels (stable/rc/beta/alpha/dev)
- Finds .zip attachments for download URLs, falls back to archive URL
- Emits one entry per channel (latest release wins)
- Extracts version from tag names, strips common prefixes
- Publicly accessible (no auth required) for Joomla update clients

This is Phase 1 of #239 — the core dynamic update feed generation.
Future phases will add license key gating, Dolibarr support, and
repo settings UI.

Ref #239

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
jmiller merged commit 44f6823292 into dev 2026-05-30 17:55:07 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MokoConsulting/MokoGitea#245