feat: extension catalog with update server discovery for one-click install #186

Open
opened 2026-06-06 11:44:23 +00:00 by jmiller · 1 comment
Owner

Summary

Add an XML-based extension catalog to MokoWaaS that lists available Moko extensions with pointers to their update servers. The installer fetches each extension's updates.xml at runtime to resolve the latest version and download URL -- no hardcoded ZIPs, always up to date.

Design

Catalog manifest (catalog.xml)

Ships with the MokoWaaS component. Each entry has metadata + the extension's update server URL:

<catalog>
  <extension>
    <name>MokoJoomOpenGraph</name>
    <element>pkg_mokoog</element>
    <type>package</type>
    <description>Open Graph, Twitter Card, and social sharing meta tags</description>
    <icon>icon-share-alt</icon>
    <author>Moko Consulting</author>
    <updateserver>https://git.mokoconsulting.tech/MokoConsulting/MokoJoomOpenGraph/raw/branch/main/updates.xml</updateserver>
  </extension>
</catalog>

Install flow

  1. Component reads catalog.xml
  2. For each entry, fetches the updates.xml from the extension's update server
  3. Parses the latest stable version + download URL from the updates.xml
  4. Cross-references with installed extensions to show install/update/installed status
  5. User clicks Install -- downloads ZIP from the resolved URL and installs via Joomla Installer

UI

New view in com_mokowaas: Extensions Catalog (or integrated into the existing dashboard). Shows a card/list per catalog entry with: name, description, icon, current version available, installed version (if any), and Install/Update button.

Files

  • com_mokowaas/admin/catalog.xml -- the catalog manifest
  • com_mokowaas/admin/src/Model/CatalogModel.php -- reads catalog, fetches update servers, resolves versions
  • com_mokowaas/admin/src/View/Catalog/HtmlView.php -- renders the catalog UI
  • com_mokowaas/admin/tmpl/catalog/default.php -- template
  • com_mokowaas/admin/src/Controller/CatalogController.php -- handles install action

Benefits

  • Adding a new extension to the catalog = one XML entry, no code changes
  • Always installs the latest version from the extension's own release
  • Each extension maintains its own update server independently
  • MokoWaaS package stays lean -- extensions are installed on demand
## Summary Add an XML-based extension catalog to MokoWaaS that lists available Moko extensions with pointers to their update servers. The installer fetches each extension's updates.xml at runtime to resolve the latest version and download URL -- no hardcoded ZIPs, always up to date. ## Design ### Catalog manifest (catalog.xml) Ships with the MokoWaaS component. Each entry has metadata + the extension's update server URL: ```xml <catalog> <extension> <name>MokoJoomOpenGraph</name> <element>pkg_mokoog</element> <type>package</type> <description>Open Graph, Twitter Card, and social sharing meta tags</description> <icon>icon-share-alt</icon> <author>Moko Consulting</author> <updateserver>https://git.mokoconsulting.tech/MokoConsulting/MokoJoomOpenGraph/raw/branch/main/updates.xml</updateserver> </extension> </catalog> ``` ### Install flow 1. Component reads catalog.xml 2. For each entry, fetches the updates.xml from the extension's update server 3. Parses the latest stable version + download URL from the updates.xml 4. Cross-references with installed extensions to show install/update/installed status 5. User clicks Install -- downloads ZIP from the resolved URL and installs via Joomla Installer ### UI New view in com_mokowaas: Extensions Catalog (or integrated into the existing dashboard). Shows a card/list per catalog entry with: name, description, icon, current version available, installed version (if any), and Install/Update button. ## Files - com_mokowaas/admin/catalog.xml -- the catalog manifest - com_mokowaas/admin/src/Model/CatalogModel.php -- reads catalog, fetches update servers, resolves versions - com_mokowaas/admin/src/View/Catalog/HtmlView.php -- renders the catalog UI - com_mokowaas/admin/tmpl/catalog/default.php -- template - com_mokowaas/admin/src/Controller/CatalogController.php -- handles install action ## Benefits - Adding a new extension to the catalog = one XML entry, no code changes - Always installs the latest version from the extension's own release - Each extension maintains its own update server independently - MokoWaaS package stays lean -- extensions are installed on demand
Author
Owner

Branch created: feature/186-feat-extension-catalog-with-update-serve

git fetch origin
git checkout feature/186-feat-extension-catalog-with-update-serve
Branch created: [`feature/186-feat-extension-catalog-with-update-serve`](https://git.mokoconsulting.tech/MokoConsulting/MokoWaaS/src/branch/feature/186-feat-extension-catalog-with-update-serve) ```bash git fetch origin git checkout feature/186-feat-extension-catalog-with-update-serve ```
Sign in to join this conversation.
No labels
Type
Status
Priority
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: MokoConsulting/MokoWaaS#186