- What does awcodes/filament-versions actually do?
- It is a thin presentation-layer package that prints your PHP, Laravel and Filament versions at the bottom of the Filament panel sidebar, plus an optional widget for dashboards or custom pages. It ships a service provider, a VersionsPlugin you register in your panel's plugins() array, and a Blade partial injected via a Filament render hook. There are no migrations, models, routes, jobs or config files to reconcile.
- How do I install awcodes/filament-versions in a Laravel Filament panel?
- Run composer require awcodes/filament-versions with an explicit constraint matching your Filament major version, then register VersionsPlugin::make() inside your panel provider's plugins() array and optionally add VersionsWidget::class to widgets(). You must first have a custom Filament theme set up, because the plugin's views need to be compiled by your theme. Add the @source '../../../../vendor/awcodes/filament-versions/resources/**/*.blade.php' line to your theme CSS before or alongside the install.
- Which package version supports Filament 4 and Filament 5?
- Package 4.x is the branch that spans Filament 4.x and 5.x, and it is the first release line to cover two Filament majors at once. The full matrix is Filament 2 to package 1.x, Filament 3 to 2.x, Filament 4 to 3.x, and Filament 4 or 5 to 4.x. Treat that matrix as a hard constraint when writing your composer.json requirement.
- Why does the versions panel render unstyled in my panel?
- Filament panel views must be compiled through a custom theme, so the package's Blade files need to be registered with an @source directive in your theme CSS. Without that line the markup renders but the Tailwind classes are never generated. The README explicitly says to follow the Filament custom theme docs first if you have not created a theme yet.
- The version list appears at the bottom of the page instead of the sidebar - is that a bug?
- No. If your panel enables the topNavigation option, the sidebar footer relocates to the bottom of your page content rather than staying in a sidebar that no longer exists. This is documented behavior, not a defect. If you want it gone entirely, call hasNavigationView(false) and rely solely on the dashboard widget.
- How do I hide the navigation view and only use the widget?
- Pass false (or a Closure) to hasNavigationView(), for example VersionsPlugin::make()->hasNavigationView(false). The widget is then registered separately by adding VersionsWidget::class to your panel's widgets() array. Layout of the widget can be tuned with widgetColumnSpan() and widgetSort().
- How do I add my own version entries such as a deploy tag or git SHA?
- Use the items() method to pass your own providers implementing the VersionProvider contract, which requires just getName() and getVersion(). You can also call hasDefaults(false) to drop the built-in PHP, Laravel and Filament providers before adding your own. Note that hasDefaults() is the real method name - the README previously documented a hasDefaultItems() that never existed.
- Is it safe to display exact Laravel and PHP versions in the admin UI?
- Behind authentication for staff-only internal panels it is trivial and low risk. It is a poor idea for any panel exposed to lower-trust or external users, since exact framework and PHP versions help an attacker target known CVEs. Decide per panel whether the sidebar footer, the widget, or neither should ship, and gate customer-facing panels accordingly.
- How do I test that the plugin does not break my panel?
- Blast radius is very low: the package cannot touch authentication, data or business logic, so worst case is cosmetic. In a feature test, assert the panel still boots and renders after registering the plugin, and cover any custom VersionProvider unit-wise since that contract is the only real extension surface. Because there is a single maintainer and a small user base, pin an exact version and read the source rather than trusting the README.
- Is awcodes/filament-versions maintained, and what are the alternatives?
- It is maintained by a single author with roughly 45 GitHub stars and negligible dependents, so ecosystem signal is thin - acceptable for a ~200-line UI package, riskier if your panel chrome becomes load-bearing. Recent history shows docs lagging code: v4.1.1 fixed a real bug where items() accepted a Closure the backing property could not hold, and corrected README drift. If that bothers you, the alternative is rendering the same three version strings yourself in a custom Blade footer via a render hook, which is a few lines of work.