helios-live/filament-feature-showcase

A Filament plugin that displays a beautiful version changelog modal with an always-accessible 'What's New' button.

Maintainers

Package info

github.com/helios-live/filament-feature-showcase

Language:Blade

pkg:composer/helios-live/filament-feature-showcase

Statistics

Installs: 1 631

Dependents: 0

Suggesters: 0

Stars: 5

Open Issues: 1

v1.3.0 2026-06-01 05:12 UTC

This package is auto-updated.

Last update: 2026-06-01 05:13:47 UTC


README

A beautiful Filament plugin that displays a version changelog modal with an always-accessible "What's New" button. Keep your users informed about new features with an elegant, accordion-style changelog.

Features

  • Auto-show modal when a new version is released
  • Accordion-style changelog showing all versions (newest first)
  • Persistent floating "What's New" button with unseen version indicator
  • Version label in the sidebar footer
  • Fully configurable via a publishable config file
  • Dark mode support
  • Respects your Filament theme colors

Installation

composer require helios-live/filament-feature-showcase

Setup

1. Register the plugin

Add the plugin to your AdminPanelProvider:

use HeliosLive\FilamentFeatureShowcase\FeatureShowcasePlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        // ...
        ->plugin(FeatureShowcasePlugin::make());
}

2. Publish the config

php artisan vendor:publish --tag=filament-feature-showcase-config

3. Add to your theme

The plugin's Tailwind classes need to be included in your Filament theme. Add the following @source directive to your theme CSS file (usually resources/css/filament/admin/theme.css):

@source '../../../../vendor/helios-live/filament-feature-showcase/resources/**/*.blade.php';

Then rebuild your theme:

npm run build

4. User model requirement

Your User model must have a JSON column to store the last seen version (defaults to preferences). The column must be cast to array:

protected $casts = [
    'preferences' => 'array',
];

If you don't have one, create a migration:

php artisan make:migration add_preferences_to_users_table
Schema::table('users', function (Blueprint $table) {
    $table->json('preferences')->nullable();
});

You can use a different column name by setting user_column in the config.

Configuration

Edit config/filament-feature-showcase.php to define your versions and features:

return [
    'current' => '1.2.0',

    'user_column' => 'preferences',

    'preference_key' => 'last_seen_version',

    'dismiss_route' => '/admin/dismiss-version-showcase',

    'changelog' => [
        '1.2.0' => [
            'title' => 'Dark Mode Support',
            'description' => 'Full dark mode support across the platform.',
            'features' => [
                [
                    'icon' => 'heroicon-o-moon',
                    'title' => 'Dark Mode',
                    'description' => 'Toggle between light and dark themes.',
                ],
            ],
        ],

        '1.1.0' => [
            'title' => 'Search Improvements',
            'description' => 'Find what you need faster.',
            'features' => [
                [
                    'icon' => 'heroicon-o-magnifying-glass',
                    'title' => 'Global Search',
                    'description' => 'Search across all resources instantly.',
                ],
            ],
        ],
    ],
];

Plugin Options

FeatureShowcasePlugin::make()
    ->showSidebarVersion(true)     // Show version in sidebar footer (default: true)
    ->showButton(true)             // Show the floating "What's New" button (default: true)
    ->buttonPosition('bottom-left') // Button position: bottom-left, bottom-right, top-left, top-right

Translations

The package UI strings are translatable using Laravel's localization system.

You may publish the translation files with:

php artisan vendor:publish --tag=filament-feature-showcase-translations

This will publish the package language files so you can customize labels such as the modal title, version badge, action buttons, and helper text.

For example, after publishing the translations, you may edit the Spanish file:

lang/vendor/filament-feature-showcase/es/messages.php

Depending on your Laravel version, the file may also be published under:

resources/lang/vendor/filament-feature-showcase/es/messages.php

Translating changelog entries

Changelog values are also passed through Laravel's __() helper when rendered.

This means you can keep using plain strings:

'changelog' => [
    '1.2.0' => [
        'title' => 'Dark Mode Support',
        'description' => 'Full dark mode support across the platform.',
        'features' => [
            [
                'icon' => 'heroicon-o-moon',
                'title' => 'Dark Mode',
                'description' => 'Toggle between light and dark themes.',
            ],
        ],
    ],
],

Or you can use translation keys:

'changelog' => [
    '1.2.0' => [
        'title' => 'changelog.versions.1_2_0.title',
        'description' => 'changelog.versions.1_2_0.description',
        'features' => [
            [
                'icon' => 'heroicon-o-moon',
                'title' => 'changelog.versions.1_2_0.features.dark_mode.title',
                'description' => 'changelog.versions.1_2_0.features.dark_mode.description',
            ],
        ],
    ],
],

Then define those translations in your application, for example:

// lang/es/changelog.php

return [
    'versions' => [
        '1_2_0' => [
            'title' => 'Compatibilidad con modo oscuro',
            'description' => 'Compatibilidad completa con modo oscuro en toda la plataforma.',
            'features' => [
                'dark_mode' => [
                    'title' => 'Modo oscuro',
                    'description' => 'Alterna entre temas claros y oscuros.',
                ],
            ],
        ],
    ],
];

How It Works

  1. When a user logs in, the plugin checks their last_seen_version preference against config('filament-feature-showcase.current')
  2. If the versions don't match, the modal auto-opens showing the latest version's features
  3. Clicking "Got it, let's go!" marks the version as seen
  4. The floating sparkles button is always available to re-open the changelog
  5. All versions are shown in a collapsible accordion, newest first

License

MIT