VulCode

Pelican Panel: our changes to an open source project

A game server management panel on Laravel and Docker, a fork of Pterodactyl.

All contributions
Language
PHP
GitHub stars
2,375
Project site
pelican.dev
2merged changes
From 25 Sep 2026 to 10 Oct 2026.
Number 42 of the 64 GitHub projects with our changes, by stars. First is Zed (91,587).

The changes merged into Pelican Panel

Updating a plugin no longer crashes after the rows are refreshed and no longer leaves the plugin uninstalled.

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.

PHP

Our projects in this technology, their screens and when we choose it.

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.

What was broken

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.

What we changed

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.

Plugin::refreshRows();
$plugin = Plugin::findOrFail($plugin->id);
What it taught us

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.

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.