[2.x] feat(admin): collapsible extension categories, health widget & abandoned package support#4392
Draft
[2.x] feat(admin): collapsible extension categories, health widget & abandoned package support#4392
Conversation
…ed package support - AdminNav: replace static category headers with collapsible groups; each group shows a count badge, category icon, and expand/collapse chevron. Categories default to collapsed; the active extension's category is pre-expanded on load. Searching auto-expands matching categories. Abandoned extensions show a warning badge on both their sidebar entry and their parent category header. - AdminApplication: fully register all extension categories (moderation, discussion, authentication, formatting, infrastructure, analytics, other) so extensions declaring these categories are correctly grouped rather than falling back to 'feature'. Add analytics category for statistics-style extensions. - ExtensionsWidget: replace the old categorised extension grid (which duplicated the sidebar) with an Extension Health Widget showing: abandoned extensions (with/without replacement), suggested packages from enabled extensions, and a compact icon grid of disabled extensions. - ExtensionLinkButton: add tooltip showing extension title and version. - ExtensionManager: add getInstalledPackageNames() to expose the full flat list of installed Composer packages, used by the health widget to filter out already- installed suggestions. - AdminPayload: apply flarum.abandoned_overrides settings key on top of the installed.json-derived abandoned status, allowing a future scheduled Packagist check (e.g. from the package manager extension) to keep abandoned data fresh without touching core's parsing logic. - composer.json (extensions): assign correct categories to all monorepo extensions (moderation, discussion, formatting, infrastructure, analytics). - locale: add all category translation keys; add extension health widget strings. - LESS: AdminNav collapsible category styles (button reset, count badge, chevron, warning icon); ExtensionWidget health widget layout. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
imorland
added a commit
to flarum/docs
that referenced
this pull request
Feb 26, 2026
…ed package support Documents changes introduced in flarum/framework#4392: - Extension Categories: new section in admin.md covering how to declare a category in composer.json, the full table of built-in categories with keys, labels and icons, and how to register custom categories via app.extensionCategories. - Extension Health Widget: new section in admin.md covering the three widget sections (abandoned, suggested, disabled), how Packagist's abandoned field works, how to use Composer's suggest field, and the flarum.abandoned_overrides forward-compatibility hook for future scheduled checking. - update-2_0.md: notable entry for the new admin dashboard (old extension grid removed, health widget added); notable entry for the collapsible sidebar overhaul with count badges, icons, and search auto-expand. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
5 tasks
m.route.get() returns null during oninit on a hard page reload before Mithril has processed the hash route. Fall back to window.location.hash so the correct category is pre-expanded when navigating directly to an extension URL (e.g. /admin#/extension/flarum-flags). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
moderation,discussion,authentication,formatting,infrastructure,analytics,other) are now registered inapp.extensionCategoriesso extensions declaring these categories are correctly grouped rather than falling back tofeature.ExtensionLinkButtontooltip — shows extension title and version on hover.getInstalledPackageNames()— new method onExtensionManagerexposing the full flat list of installed Composer packages, used by the health widget to filter already-installed suggestions.flarum.abandoned_overridessettings key —AdminPayloadnow merges this key over theinstalled.json-derived abandoned status. This is a forward-compatibility hook allowing a future scheduled Packagist check (planned for the package manager extension) to keep abandoned data fresh without changes to core. Defaults to{}— no behaviour change when absent.composer.json.Docs
Documentation for these changes: flarum/docs#506
Test plan
flarum.abandoned_overridessetting (when set) correctly overrides per-extension abandoned status🤖 Generated with Claude Code