Skip to content

UI breaks if a plugin is uploaded whose ID doesn't match its folder name #2123

@zacharee

Description

@zacharee

Current Behavior

Right now, if you upload a plugin zip through the web UI where the file name doesn't match the plugin ID, the UI will show an error and it will be impossible to use the web UI to install or remove the broken plugin. It's also impossible to reupload the plugin with the correct zip name.

Expected Behavior

If the zip or folder name not matching the plugin ID is an issue, it should be possible to delete the files through the web UI.

Steps to Reproduce

  1. Download the plugins repo as a zip.
  2. Extract it locally.
  3. Bundle a single plugin into a zip named anything except what its ID is.
  4. Upload that zip through the web UI.
  5. The UI will show an error saying that the zip name doesn't match the plugin ID.
  6. The "deactivate" and "uninstall" options are available but don't do anything.
  7. SSHing into the host and renaming the plugin folder to match its ID will allow installing the plugin through the web UI.

Panel Version

1.0.0-beta30

Wings Version

1.0.0-beta21

Games and/or Eggs Affected

No response

Docker Image

No response

Error Logs

Stacktrace when submitting the plugin zip (a lot of repeated blocks removed to hit the character limit):

[2026-01-19 13:16:02] production.ERROR: Plugin id mismatch for folder name (Archive) and id in plugin.json (billing)! {"exception":"[object] (Exception(code: 0): Plugin id mismatch for folder name (Archive) and id in plugin.json (billing)! at /var/www/pelican/app/Models/Plugin.php:113)
[stacktrace]
#0 /var/www/pelican/vendor/calebporzio/sushi/src/Sushi.php(132): App\\Models\\Plugin->getRows()
#1 /var/www/pelican/vendor/calebporzio/sushi/src/Sushi.php(75): App\\Models\\Plugin->migrate()
#2 /var/www/pelican/vendor/calebporzio/sushi/src/Sushi.php(81): App\\Models\\Plugin::{closure:Sushi\\Sushi::bootSushi():72}()
#3 [internal function]: App\\Models\\Plugin::bootSushi()
#4 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(377): ReflectionMethod->invoke()
#5 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(351): Illuminate\\Database\\Eloquent\\Model::bootTraits()
#6 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(321): Illuminate\\Database\\Eloquent\\Model::boot()
#7 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(299): Illuminate\\Database\\Eloquent\\Model->bootIfNotBooted()
#8 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(1590): Illuminate\\Database\\Eloquent\\Model->__construct()
#9 /var/www/pelican/app/Services/Helpers/PluginService.php(42): Illuminate\\Database\\Eloquent\\Model::query()
#10 /var/www/pelican/app/Providers/AppServiceProvider.php(133): App\\Services\\Helpers\\PluginService->loadPlugins()
#11 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(896): App\\Providers\\AppServiceProvider->register()
#12 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/ProviderRepository.php(74): Illuminate\\Foundation\\Application->register()
#13 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(871): Illuminate\\Foundation\\ProviderRepository->load()
#14 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/RegisterProviders.php(37): Illuminate\\Foundation\\Application->registerConfiguredProviders()
#15 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(342): Illuminate\\Foundation\\Bootstrap\\RegisterProviders->bootstrap()
#16 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(494): Illuminate\\Foundation\\Application->bootstrapWith()
#17 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(196): Illuminate\\Foundation\\Console\\Kernel->bootstrap()
#18 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle()
#19 /var/www/pelican/artisan(16): Illuminate\\Foundation\\Application->handleCommand()
#20 {main}
"} 
[2026-01-19 13:16:02] production.ERROR: Class "\Error\Error" not found {"exception":"[object] (Exception(code: 0): Class \"\\Error\\Error\" not found at /var/www/pelican/app/Services/Helpers/PluginService.php:147)
[stacktrace]
#0 /var/www/pelican/app/Providers/Filament/AdminPanelProvider.php(53): App\\Services\\Helpers\\PluginService->loadPanelPlugins()
#1 /var/www/pelican/vendor/filament/filament/src/PanelProvider.php(15): App\\Providers\\Filament\\AdminPanelProvider->panel()
#2 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Collections/helpers.php(266): Filament\\PanelProvider->{closure:Filament\\PanelProvider::register():15}()
#3 /var/www/pelican/vendor/filament/filament/src/Facades/Filament.php(177): value()
#4 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/Container.php(1622): Filament\\Facades\\Filament::{closure:Filament\\Facades\\Filament::registerPanel():177}()
#5 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/Container.php(1542): Illuminate\\Container\\Container->fireCallbackArray()
#6 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/Container.php(951): Illuminate\\Container\\Container->fireResolvingCallbacks()
#7 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1078): Illuminate\\Container\\Container->resolve()
#8 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/Container.php(864): Illuminate\\Foundation\\Application->resolve()
#9 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1058): Illuminate\\Container\\Container->make()
#10 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(138): Illuminate\\Foundation\\Application->make()
#11 /var/www/pelican/vendor/filament/filament/src/FilamentManager.php(361): app()
#12 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(363): Filament\\FilamentManager->getPanels()
#13 /var/www/pelican/vendor/filament/filament/routes/web.php(15): Illuminate\\Support\\Facades\\Facade::__callStatic()
#14 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Routing/Router.php(524): Illuminate\\Support\\ServiceProvider->{closure:/var/www/pelican/vendor/filament/filament/routes/web.php:14}()
#15 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Routing/Router.php(480): Illuminate\\Routing\\Router->loadRoutes()
#16 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Routing/RouteRegistrar.php(212): Illuminate\\Routing\\Router->group()
#17 /var/www/pelican/vendor/filament/filament/routes/web.php(14): Illuminate\\Routing\\RouteRegistrar->group()
#18 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Support/ServiceProvider.php(201): require('...')
#19 /var/www/pelican/vendor/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessRoutes.php(14): Illuminate\\Support\\ServiceProvider->loadRoutesFrom()
#20 /var/www/pelican/vendor/spatie/laravel-package-tools/src/PackageServiceProvider.php(85): Spatie\\LaravelPackageTools\\PackageServiceProvider->bootPackageRoutes()
#21 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Spatie\\LaravelPackageTools\\PackageServiceProvider->boot()
#22 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::{closure:Illuminate\\Container\\BoundMethod::call():35}()
#23 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure()
#24 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod()
#25 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\Container\\BoundMethod::call()
#26 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1151): Illuminate\\Container\\Container->call()
#27 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1132): Illuminate\\Foundation\\Application->bootProvider()
#28 [internal function]: Illuminate\\Foundation\\Application->{closure:Illuminate\\Foundation\\Application::boot():1131}()
#29 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1131): array_walk()
#30 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/BootProviders.php(17): Illuminate\\Foundation\\Application->boot()
#31 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(342): Illuminate\\Foundation\\Bootstrap\\BootProviders->bootstrap()
#32 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(494): Illuminate\\Foundation\\Application->bootstrapWith()
#33 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(196): Illuminate\\Foundation\\Console\\Kernel->bootstrap()
#34 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle()
#35 /var/www/pelican/artisan(16): Illuminate\\Foundation\\Application->handleCommand()
#36 {main}
"} 
[2026-01-19 13:16:02] production.ERROR: Class "\Error\Error" not found {"exception":"[object] (Exception(code: 0): Class \"\\Error\\Error\" not found at /var/www/pelican/app/Services/Helpers/PluginService.php:147)
[stacktrace]
#0 /var/www/pelican/app/Providers/Filament/AppPanelProvider.php(37): App\\Services\\Helpers\\PluginService->loadPanelPlugins()
#1 /var/www/pelican/vendor/filament/filament/src/PanelProvider.php(15): App\\Providers\\Filament\\AppPanelProvider->panel()
#2 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Collections/helpers.php(266): Filament\\PanelProvider->{closure:Filament\\PanelProvider::register():15}()
#3 /var/www/pelican/vendor/filament/filament/src/Facades/Filament.php(177): value()
#4 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/Container.php(1622): Filament\\Facades\\Filament::{closure:Filament\\Facades\\Filament::registerPanel():177}()
#5 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/Container.php(1542): Illuminate\\Container\\Container->fireCallbackArray()
#6 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/Container.php(951): Illuminate\\Container\\Container->fireResolvingCallbacks()
#7 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1078): Illuminate\\Container\\Container->resolve()
#8 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/Container.php(864): Illuminate\\Foundation\\Application->resolve()
#9 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1058): Illuminate\\Container\\Container->make()
#10 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(138): Illuminate\\Foundation\\Application->make()
#11 /var/www/pelican/vendor/filament/filament/src/FilamentManager.php(361): app()
#12 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(363): Filament\\FilamentManager->getPanels()
#13 /var/www/pelican/vendor/filament/filament/routes/web.php(15): Illuminate\\Support\\Facades\\Facade::__callStatic()
#14 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Routing/Router.php(524): Illuminate\\Support\\ServiceProvider->{closure:/var/www/pelican/vendor/filament/filament/routes/web.php:14}()
#15 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Routing/Router.php(480): Illuminate\\Routing\\Router->loadRoutes()
#16 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Routing/RouteRegistrar.php(212): Illuminate\\Routing\\Router->group()
#17 /var/www/pelican/vendor/filament/filament/routes/web.php(14): Illuminate\\Routing\\RouteRegistrar->group()
#18 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Support/ServiceProvider.php(201): require('...')
#19 /var/www/pelican/vendor/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessRoutes.php(14): Illuminate\\Support\\ServiceProvider->loadRoutesFrom()
#20 /var/www/pelican/vendor/spatie/laravel-package-tools/src/PackageServiceProvider.php(85): Spatie\\LaravelPackageTools\\PackageServiceProvider->bootPackageRoutes()
#21 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Spatie\\LaravelPackageTools\\PackageServiceProvider->boot()
#22 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::{closure:Illuminate\\Container\\BoundMethod::call():35}()
#23 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure()
#24 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod()
#25 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\Container\\BoundMethod::call()
#26 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1151): Illuminate\\Container\\Container->call()
#27 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1132): Illuminate\\Foundation\\Application->bootProvider()
#28 [internal function]: Illuminate\\Foundation\\Application->{closure:Illuminate\\Foundation\\Application::boot():1131}()
#29 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1131): array_walk()
#30 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/BootProviders.php(17): Illuminate\\Foundation\\Application->boot()
#31 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(342): Illuminate\\Foundation\\Bootstrap\\BootProviders->bootstrap()
#32 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(494): Illuminate\\Foundation\\Application->bootstrapWith()
#33 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(196): Illuminate\\Foundation\\Console\\Kernel->bootstrap()
#34 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle()
#35 /var/www/pelican/artisan(16): Illuminate\\Foundation\\Application->handleCommand()
#36 {main}
"} 
[2026-01-19 13:16:02] production.ERROR: Class "\Error\Error" not found {"exception":"[object] (Exception(code: 0): Class \"\\Error\\Error\" not found at /var/www/pelican/app/Services/Helpers/PluginService.php:147)
[stacktrace]
#0 /var/www/pelican/app/Providers/Filament/ServerPanelProvider.php(52): App\\Services\\Helpers\\PluginService->loadPanelPlugins()
#1 /var/www/pelican/vendor/filament/filament/src/PanelProvider.php(15): App\\Providers\\Filament\\ServerPanelProvider->panel()
#2 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Collections/helpers.php(266): Filament\\PanelProvider->{closure:Filament\\PanelProvider::register():15}()
#3 /var/www/pelican/vendor/filament/filament/src/Facades/Filament.php(177): value()
#4 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/Container.php(1622): Filament\\Facades\\Filament::{closure:Filament\\Facades\\Filament::registerPanel():177}()
#5 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/Container.php(1542): Illuminate\\Container\\Container->fireCallbackArray()
#6 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/Container.php(951): Illuminate\\Container\\Container->fireResolvingCallbacks()
#7 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1078): Illuminate\\Container\\Container->resolve()
#8 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/Container.php(864): Illuminate\\Foundation\\Application->resolve()
#9 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1058): Illuminate\\Container\\Container->make()
#10 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(138): Illuminate\\Foundation\\Application->make()
#11 /var/www/pelican/vendor/filament/filament/src/FilamentManager.php(361): app()
#12 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php(363): Filament\\FilamentManager->getPanels()
#13 /var/www/pelican/vendor/filament/filament/routes/web.php(15): Illuminate\\Support\\Facades\\Facade::__callStatic()
#14 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Routing/Router.php(524): Illuminate\\Support\\ServiceProvider->{closure:/var/www/pelican/vendor/filament/filament/routes/web.php:14}()
#15 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Routing/Router.php(480): Illuminate\\Routing\\Router->loadRoutes()
#16 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Routing/RouteRegistrar.php(212): Illuminate\\Routing\\Router->group()
#17 /var/www/pelican/vendor/filament/filament/routes/web.php(14): Illuminate\\Routing\\RouteRegistrar->group()
#18 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Support/ServiceProvider.php(201): require('...')
#19 /var/www/pelican/vendor/spatie/laravel-package-tools/src/Concerns/PackageServiceProvider/ProcessRoutes.php(14): Illuminate\\Support\\ServiceProvider->loadRoutesFrom()
#20 /var/www/pelican/vendor/spatie/laravel-package-tools/src/PackageServiceProvider.php(85): Spatie\\LaravelPackageTools\\PackageServiceProvider->bootPackageRoutes()
#21 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Spatie\\LaravelPackageTools\\PackageServiceProvider->boot()
#22 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::{closure:Illuminate\\Container\\BoundMethod::call():35}()
#23 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure()
#24 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod()
#25 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminate\\Container\\BoundMethod::call()
#26 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1151): Illuminate\\Container\\Container->call()
#27 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1132): Illuminate\\Foundation\\Application->bootProvider()
#28 [internal function]: Illuminate\\Foundation\\Application->{closure:Illuminate\\Foundation\\Application::boot():1131}()
#29 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1131): array_walk()
#30 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/BootProviders.php(17): Illuminate\\Foundation\\Application->boot()
#31 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(342): Illuminate\\Foundation\\Bootstrap\\BootProviders->bootstrap()
#32 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(494): Illuminate\\Foundation\\Application->bootstrapWith()
#33 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(196): Illuminate\\Foundation\\Console\\Kernel->bootstrap()
#34 /var/www/pelican/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle()
#35 /var/www/pelican/artisan(16): Illuminate\\Foundation\\Application->handleCommand()
#36 {main}
"} 

Is there an existing issue for this?

  • I have searched the existing issues before opening this issue.
  • I have provided all relevant details, including the specific game and Docker images I am using if this issue is related to running a server.
  • I have checked in the Discord server and believe this is a bug with the software, and not a configuration issue with my specific system.

Metadata

Metadata

Assignees

No one assigned

    Labels

    not confirmedNot yet verified or reproduced by maintainers

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions