Skip to main content

Versioning & Releases

Pelican follows semantic versioning (MAJOR.MINOR.PATCH).

Panel and Wings​

The Panel and Wings are versioned independently. A Panel release does not mean there is a Wings release with the same number, and the other way around. Compatibility is guaranteed within a major version: any Panel 1.x works with any Wings 1.x. See Updating the Panel and Updating Wings for the current requirements.

What semver covers​

A breaking change to any of these only happens in a new major version:

These are not covered and can change in any release:

  • The database schema. It is internal, use the API instead of querying tables directly.
  • Internal PHP classes, services and views not listed in the plugin compatibility policy.
  • The UI.

Deprecations​

Features, API fields and config keys are deprecated in a minor release and removed only in the next major release. Deprecations are announced in the release notes and marked as deprecated in the API docs.

Minimum requirements (PHP, database versions) are only raised in minor releases and are announced in the release notes.

Releases​

Releases are tagged from the main branch.

  • Patch releases (1.0.1) contain bug and security fixes.
  • Minor releases (1.1.0) add features and can deprecate things.
  • Major releases (2.0.0) can remove deprecated things and make other breaking changes.

The changelog lives in the GitHub releases:

Support​

Only the latest release is supported. Bug and security fixes ship as a new patch release, they are not backported to older versions. Please update before reporting a bug.

Upgrading from a beta​

Update like any other release, following Updating the Panel and Updating Wings. Upgrading from 1.0.0-beta38 or earlier to 1.0.0 includes these breaking changes:

PHP 8.4 required

PHP 8.3 is no longer supported. Upgrade PHP before updating the Panel.

Application API​

API responses are unchanged, but some deprecated request inputs were removed:

EndpointRemoved inputUse instead
PATCH /api/application/servers/{id}/buildmemory, swap, io, cpu, threads, disklimits.*
POST /api/application/serversdeploy.locationsdeploy.tags
GET /api/application/nodes/deployablelocation_idstags

The removed inputs are silently ignored on the build and deployable endpoints, so check any scripts or billing integrations that still send them.

Discord webhooks​

Discord support moved out of the core webhook system into plugins. Existing Discord webhooks keep firing with their saved payload, but lose the Discord-specific formatting (such as embed timestamps) and can't be edited. Install a plugin that provides the Discord webhook type to edit them or create new ones.

Plugins​

  • Fractal was removed. App\Transformers\Api\* and $this->fractal are gone; API responses are built with the classes in app/Data/Api and $this->response.
  • App\Enums\WebhookType and the DiscordPreview component were removed. Webhook types are now plain strings.
  • Activity logs are append-only. Updating or deleting an ActivityLog throws an exception.
  • Major dependency updates: phpseclib/phpseclib 4, predis/predis 3, spatie/laravel-permission 8 and spatie/laravel-query-builder 7. Check your plugin code and composer_packages.
  • ^ in panel_version now works like composer's caret and stops before the next major version. See Panel version.

Passkeys​

If passkey sign-in fails after updating and the Panel runs behind a reverse proxy, set TRUSTED_PROXIES (see Reverse Proxy Setup) so the Panel sees the correct host.