Skip to content

[2.x] feat(package-manager): replace flarum.org API with Packagist search#4394

Merged
imorland merged 2 commits into
2.xfrom
im/package-manager-flarum-org-api-removal
Mar 2, 2026
Merged

[2.x] feat(package-manager): replace flarum.org API with Packagist search#4394
imorland merged 2 commits into
2.xfrom
im/package-manager-flarum-org-api-removal

Conversation

@imorland

@imorland imorland commented Mar 2, 2026

Copy link
Copy Markdown
Member

Summary

The flarum.org extension API is being shut down. This PR replaces the Discover tab's data source with the public Packagist search API, keeping the feature operational with no new infrastructure required.

  • ExternalExtensionResource now queries packagist.org/search.json instead of flarum.org/api/extensions
  • Language tab uses q=flarum-lang, theme tab uses q=flarum+theme (Packagist has no dedicated type for these)
  • RequestWrapper gains setQueryParam() to safely overwrite scalar query params without array_merge_recursive collisions
  • Premium filter, sort-by-newest, compatible/incompatible/unstable badges removed (data not available from Packagist)
  • Abandoned badge added (Packagist provides an abandoned flag)
  • Dead links (flarum.org/terms/premium-extensions, flarum.org/extensions) replaced with packagist.org equivalents

What was lost

Feature Status
Compatible / Incompatible badge per card Lost — no version data from Packagist search
Unstable badge (alpha/beta/rc) Lost — no version data from Packagist search
Premium badge and filter Lost — Packagist has no premium concept
Discuss link per card Lost — not in Packagist data
Extension icon/colors Lost — falls back to generic icon
Human-readable extension title Lost — uses vendor/package-name
Sort by newest Lost — Packagist only supports downloads sort
Accurate language/theme tab filtering Degraded — uses keyword search

This is intended as a stop-gap. The architecture remains easy to swap out once a new Flarum-owned extension directory API is available.

Test plan

  • Discover tab loads and paginates (Extensions tab)
  • Languages tab returns language packs
  • Themes tab returns theme results
  • Search box filters results
  • Abandoned extensions show the abandoned badge
  • FoF and Flarum vendor badges display correctly
  • Install button works for uninstalled extensions; shows checkmark for installed ones
  • Packagist link in Installer help text is correct

🤖 Generated with Claude Code

imorland and others added 2 commits March 2, 2026 07:42
The flarum.org extension API is being shut down. This replaces the
Discover tab's backend with the public Packagist search API, keeping
the feature functional with minimal disruption.

Changes:
- ExternalExtensionResource now queries packagist.org/search.json
- Language tab uses q=flarum-lang, theme tab uses q=flarum+theme
  (Packagist has no dedicated type for these)
- RequestWrapper gains setQueryParam() to safely overwrite scalar
  query params without array_merge_recursive collisions
- Removed fields: isPremium, isSupported, discussUri, latestFlarumVersionSupported
- Added field: abandoned (from Packagist abandoned flag)
- Removed UI: premium filter, sort-by-newest, compatible/unstable badges
- Added UI: abandoned badge on extension cards
- Dead links (flarum.org/terms/premium-extensions, flarum.org/extensions)
  replaced with packagist.org equivalents

Co-Authored-By: Claude Sonnet 4.6 <[email protected]>
@imorland imorland changed the title feat(package-manager): replace flarum.org API with Packagist search [2.x] feat(package-manager): replace flarum.org API with Packagist search Mar 2, 2026
@imorland imorland added this to the 2.0.0-beta.8 milestone Mar 2, 2026
@imorland imorland marked this pull request as ready for review March 2, 2026 07:53
@imorland imorland requested a review from a team as a code owner March 2, 2026 07:53
@imorland imorland merged commit 60fa03a into 2.x Mar 2, 2026
34 checks passed
@imorland imorland deleted the im/package-manager-flarum-org-api-removal branch March 2, 2026 08:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants