Pelican Panel: our changes to an open source project
A game server management panel on Laravel and Docker, a fork of Pterodactyl.
- Language
- PHP
- GitHub stars
- 2,375
- Project site
- pelican.dev
The changes merged into Pelican Panel
Updating a plugin no longer crashes after the rows are refreshed and no longer leaves the plugin uninstalled.
- Pull request #2635merged on 10 October 2026
- Pull request #2598merged on 25 September 2026
Fix plugin update crashing after the rows are refreshed
github.com/pelican/panel/pull/2598
How we tested #2598
We added an integration test for a successful update: a faked download of a package with a new version, the update itself and a check of the plugin's state afterwards. On main before the fix, the test fails with exactly the error from the issue.
The bug, the fix and the lesson
A summary of our Tech news write-up: what was broken, what we changed and what it means for our own work.
Updating a plugin crashed
After downloading the new version, updatePlugin() called refreshRows(), which resets the Sushi connection, and then refresh() on the old model instance. An update from the panel died with query() on null.
The record is loaded again
The code loads the plugin again with Plugin::findOrFail(), as the plugin jobs in the project already do, and the API returns the fresh object.
An update that fails halfway must not leave the system worse off than before.
We check the same in the panel updates we build.
Other projects with our changes: PHP
20 projects in this technology have our merged changes. The bar is the repository's stars, next to it the number of our changes. Each row leads to the project's page.
Questions about our changes to Pelican Panel
Where these changes come from, who merged them and whether we can fix something in your library.
Read next
More about this work and the other projects with our changes.
Using Pelican Panel in your project?
If something in it does not work, we fix it at the source and leave a workaround until the release. We reply within an hour.