-
Notifications
You must be signed in to change notification settings - Fork 61
Document the plugin api contract and Docker panel updates #216
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -21,6 +21,16 @@ Please see the chart below for how these versions line up. | |
| You have two options for updating: use the automatic update script (recommended) or do the update steps manually. | ||
|
|
||
| <Tabs> | ||
| <TabItem value="Docker"> | ||
| A [Docker install](./advanced/docker) updates by pulling the new image. From the directory containing your `compose.yml`, run: | ||
|
|
||
| ```sh | ||
| docker compose pull | ||
| docker compose up -d | ||
| ``` | ||
|
|
||
| Database migrations run automatically when the new container starts. | ||
| </TabItem> | ||
| <TabItem value="Update script (recommended)"> | ||
| Simply run the command below and the update script will guide you through the process: | ||
|
|
||
|
|
@@ -49,6 +59,14 @@ You have two options for updating: use the automatic update script (recommended) | |
| curl -L https://github.com/pelican/panel/releases/latest/download/panel.tar.gz | sudo tar -xzv | ||
| ``` | ||
|
|
||
| To verify the archive before extracting it, download it together with its `checksum.txt` release asset instead: | ||
|
|
||
| ```sh | ||
| curl -LO https://github.com/pelican/panel/releases/latest/download/panel.tar.gz | ||
| curl -LO https://github.com/pelican/panel/releases/latest/download/checksum.txt | ||
|
Comment on lines
+65
to
+66
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win Run the downloads with sufficient privileges. These commands write into Suggested command update- curl -LO https://github.com/pelican/panel/releases/latest/download/panel.tar.gz
- curl -LO https://github.com/pelican/panel/releases/latest/download/checksum.txt
- sha256sum -c checksum.txt && sudo tar -xzvf panel.tar.gz && rm panel.tar.gz checksum.txt
+ sudo curl -fL https://github.com/pelican/panel/releases/latest/download/panel.tar.gz -o panel.tar.gz
+ sudo curl -fL https://github.com/pelican/panel/releases/latest/download/checksum.txt -o checksum.txt
+ sudo sha256sum -c checksum.txt && sudo tar -xzvf panel.tar.gz && sudo rm panel.tar.gz checksum.txt🤖 Prompt for AI Agents |
||
| sha256sum -c checksum.txt && sudo tar -xzvf panel.tar.gz && rm panel.tar.gz checksum.txt | ||
| ``` | ||
|
|
||
| Once the archive is downloaded and extracted we need to set the correct permissions on the cache and storage directories to avoid | ||
| any webserver related errors. | ||
|
|
||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift
🔎 Supported by static analysis
🏁 Script executed:
Repository: pelican/docs
Length of output: 5378
🤖 get_repo_knowledge executed:
get_repo_knowledge pelican/docs /tmp/coderabbit-repo-knowledge/pelican-docs-ff1e241aLength of output: 339
🏁 Script executed:
Repository: pelican/docs
Length of output: 286
🏁 Script executed:
Repository: pelican/docs
Length of output: 17156
🌐 Web query:
Pelican panel plugin.json api_version implementation💡 Result:
In the context of the Pelican game server management panel (pelican-dev/panel), there is no specific field named api_version in the plugin.json file [1][2]. Instead, the plugin metadata uses a field called panel_version to handle compatibility [1][2]. The panel_version field is an optional parameter that specifies the minimum required Pelican panel version for the plugin [1][2]. If it is not defined in the plugin.json, the plugin will be loaded regardless of the panel version [1]. For context, developers should ensure their plugin.json includes the following mandatory fields: id (must match the root folder name), name, author, category (e.g., plugin), namespace, and class [1][2]. Other optional fields include version (semantic versioning recommended), description, update_url, panels, and composer_packages [1][2]. Note: It is important to distinguish the Pelican game server panel from the static site generator "Pelican" (getpelican.com), which operates on a different plugin system based on Python signals and does not use a plugin.json for metadata in this manner [3][4].
Citations:
🌐 Web query:
site:github.com/pelican-dev/panel "api_version"💡 Result:
In the context of software development, API versioning (often represented as api_version) is a critical practice used to manage changes to an application programming interface (API) over time without breaking existing client integrations [1]. By including a version identifier in the API, developers can introduce new features, modify response schemas, or change request parameters while allowing older versions of the API to remain functional for legacy clients [1][2]. Common methods for implementing API versioning include: 1. URI Versioning: Including the version number directly in the URL path (e.g., /api/v1/resource or /api/v2/resource). This is highly visible and easy for clients to target. 2. Header Versioning: Specifying the version via a custom HTTP header (e.g., X-API-Version: 2). This keeps URLs clean but can make caching and testing slightly more complex. 3. Query Parameter Versioning: Passing the version as a parameter in the URL query string (e.g., /api/resource?version=1). When an API is updated—such as when response models or request parameters change—maintaining proper versioning helps prevent disruption for users who rely on the previous behavior [1][2]. In many modern web frameworks, this is often handled at the routing or middleware level to direct traffic to the appropriate codebase for that specific version [3][4].
Citations:
🌐 Web query:
site:github.com/pelican/panel "api_version" plugin💡 Result:
There is no standard software development concept specifically named "api_version plugin." Based on current technical documentation and repository patterns, the term likely refers to one of the following contexts depending on the specific system you are working with: 1. Metadata Field: In plugin development (such as within the Pelican panel architecture), plugins often include a version field in their manifest file (e.g., plugin.json) to track the version of the plugin itself, independent of the host application's API version [1]. 2. API Versioning Policy: In the context of API management, "API versioning" refers to the strategy used to manage changes to an API over time. Modern systems often use OpenAPI specifications to document these versions and enforce a non-breaking guarantee for clients [2][3]. 3. Misinterpretation of Plugin Management: In some systems like the Pelican panel, there are API endpoints dedicated to managing plugins (listing, installing, enabling, etc.), which are part of the application's overall API [4][5]. Developers may sometimes conflate these "plugin API" endpoints with the concept of versioning. If you are encountering this term in a specific framework or codebase, it is recommended to search for "plugin manifest version" or "API versioning policy" within that project's documentation to see how versioning is handled for plugins versus the core API [2].
Citations:
🏁 Script executed:
Repository: pelican/docs
Length of output: 482
🏁 Script executed:
Repository: pelican/docs
Length of output: 9638
🌐 Web query:
Pelican panel pull request 2233 api_version plugin.json💡 Result:
It is important to distinguish between the static site generator Pelican (often referred to as just "Pelican") [1][2] and the software "Pelican Panel" (often found at github.com/pelican-dev/panel) [3][4], as they are separate projects. Regarding the query about pull request 2233 and plugin.json: 1. Pelican Panel (not the static site generator) has a pull request
#2233titled "Improve plugin loading" [5][3]. 2. This pull request focuses on improving the robustness of the plugin system in Pelican Panel, specifically concerning how plugins are loaded and validated via theirplugin.jsonmanifest [5][3]. 3. Among the changes, it introduces improvements to metadata population and stricter loading guards to skip plugins that resolve to an error class [5][3]. 4. While theplugin.jsonfile in Pelican Panel does include apanel_versionfield used for compatibility checks (which allows a plugin to specify the minimum required panel version) [6][4], the pull request itself was primarily focused on internal loading logic, handling ID mismatches between folders andplugin.jsonIDs, and ensuring system stability rather than introducing a newapi_versionfield [5][3]. For the static site generator Pelican, plugins are managed via Python namespaces and thePLUGINSconfiguration setting [1][2]; they do not utilize aplugin.jsonfile, and thus the query is not applicable to that project [1][2].Citations:
🏁 Script executed:
Repository: pelican/docs
Length of output: 50368
Do not document
api_versionuntil the panel supports it.Plugin::getRows()discardsapi_version.Plugin::isCompatible()andPluginServicecheck onlypanel_version. A plugin with a newerapi_versioncan therefore load, so the compatibility behavior described at lines 179–181 does not exist. Implement and test this field, or remove theapi_versiondocumentation until support exists.🤖 Prompt for AI Agents