A native Joomla admin component that discovers, installs, updates and uninstalls the FG series of GitHub extensions - no manual "Install from URL" per extension, no separate catalog to maintain by hand.
- Discovery: every GitHub repo under a configured owner/org that carries a specific
GitHub topic (default
FGcodework/fg-joomla-extension) is tracked automatically. Tag a new repo with that topic and it shows up here on the next refresh - no reinstall needed. - Compatibility: reads each repo's own
updates.xml(the same file Joomla's native "Find Updates" already uses), matching the running Joomla and PHP version. A repo with a subfolder build split (e.g. a separate Joomla 6-native build underjoomla6/) is tried automatically if the root file doesn't cover the current Joomla version. - Install / Update / Uninstall: uses Joomla's own core installer
(
Installer::install()/::update()/::uninstall()) - the same mechanism as Extensions › Manage. - Enable / Disable: toggles
#__extensions.enableddirectly, mirroring the green check / red circle on Joomla's own Extensions: Manage screen. - Settings: one click to a plugin's edit screen or a component's own admin screen, where Joomla has a well-defined target for one.
- Changelog preview: expands the latest
CHANGELOG.mdentry inline, with a link to the full file on GitHub.
- Joomla 5.0 or newer (including Joomla 6)
- PHP 8.1 or newer, with the cURL extension enabled
Both are checked automatically at install time - installing on something older fails with a clear message instead of a PHP fatal error later.
- Download the latest release ZIP from the Releases page.
- Extensions → Install → Upload Package File.
- Open Components → FG Package Manager, then Options to set the GitHub owner/org and topic (pre-filled with sensible defaults).
| Setting | Default | Description |
|---|---|---|
| GitHub Owner/Org | FGcodework |
The GitHub account to search within |
| GitHub Topic | fg-joomla-extension |
Only repos tagged with this exact topic are tracked |
| Cache Duration | 30 minutes | How long fetched updates.xml/CHANGELOG.md data is cached |
| HTTP Timeout | 10 seconds | Timeout per request when fetching from GitHub |
- Give the GitHub repo the topic
fg-joomla-extension(repo page → the gear next to About). - Make sure the repo has an
updates.xmlin its root (or in ajoomla6// similar subfolder for a separate build) with a<downloadurl>and, ideally, a<sha512>of the release ZIP. - Optional: add a logo as
assets/logo.webp(fallbackassets/logo.png), 512×512 with transparent corners. It is loaded from the repo's default branch; without it the list shows a letter tile. - Press Refresh in the component - the extension appears in the list.
Update All installs every pending update one after another; this component itself is always updated last. It asks PHP for extra execution time and, if the host's limit is still too tight, stops before starting an update that wouldn't fit and lists the ones left over - press Update All again to finish.
| Action | Required permission |
|---|---|
| View the list, Refresh | core.manage |
| Install, Update, Update All, Enable/Disable | core.manage |
| Uninstall, Options | core.admin |
The component can't uninstall or disable itself from its own list.
- Every action is protected by Joomla's CSRF token and the permissions above.
- Download URLs must be HTTPS and on a GitHub host (allowlist), and the ZIP is verified against the
sha256/sha384/sha512checksum from the repo'supdates.xmlwhen one is published. - Nothing is installed without an explicit click (or Update All confirmation).
- The list is empty - check Options: owner/org and topic must match the repos' GitHub topic exactly (this component itself is always shown).
- Data looks stale - Refresh bypasses the cache; the cache lives in Joomla's cache folder
(
cache/com_fgextensionmanager) and expires after the configured number of minutes. - A status says "Not compatible" - the repo's
updates.xmlhas no entry for your Joomla/PHP version; the version shown in muted text is the newest the repo publishes. - A logo is missing - a repo without
assets/logo.*(or a temporary GitHub throttle) shows a letter tile; the logo is retried once automatically.
GNU General Public License v2.0 or later - see LICENSE.txt.
