diff --git a/README.md b/README.md index 0972da4..4a8fea7 100644 --- a/README.md +++ b/README.md @@ -9,12 +9,12 @@ single plugin repo URL directly. ## Plugins -| Plugin | Type | Version | Repo | -|---|---|---|---| -| AniDB | metadata-provider | 0.1.0 | [phlix-plugin-anidb](https://github.com/detain/phlix-plugin-anidb) | -| MyAnimeList | metadata-provider | 0.1.0 | [phlix-plugin-myanimelist](https://github.com/detain/phlix-plugin-myanimelist) | -| Trakt | scrobbler | 1.0.0 | [phlix-plugin-trakt](https://github.com/detain/phlix-plugin-trakt) | -| Last.fm | scrobbler | 1.0.0 | [phlix-plugin-lastfm](https://github.com/detain/phlix-plugin-lastfm) | +| Plugin | Type | Version | Min Server | Repo | +|---|---|---|---|---| +| AniDB | metadata-provider | 0.1.0 | ≥ 0.10.0 | [phlix-plugin-anidb](https://github.com/detain/phlix-plugin-anidb) | +| MyAnimeList | metadata-provider | 0.1.0 | ≥ 0.10.0 | [phlix-plugin-myanimelist](https://github.com/detain/phlix-plugin-myanimelist) | +| Trakt | scrobbler | 1.0.0 | ≥ 0.14.0 | [phlix-plugin-trakt](https://github.com/detain/phlix-plugin-trakt) | +| Last.fm | scrobbler | 1.0.0 | ≥ 0.15.0 | [phlix-plugin-lastfm](https://github.com/detain/phlix-plugin-lastfm) | ## Catalog format (`plugins.json`) @@ -40,6 +40,10 @@ moving branch. "ref": "852b472a6aa73b80192af96310fcc789dbcaf8d7", "artifactSha256": "e8277e0ed419e4eb02245ad86896025bb6bb8ce90c348d2a7c7ea958724ce08c", "version": "0.1.0", + "minServerVersion": "0.10.0", + "verified": true, + "deprecated": false, + "yanked": false, "tags": ["anime", "metadata"] } ] @@ -56,6 +60,12 @@ moving branch. | `ref` | yes | 40-char lowercase commit sha the entry is **pinned** to (not a branch/tag). | | `artifactSha256` | yes | Bare 64-hex sha256 of `…/archive/.tar.gz` (no `sha256:` prefix). | | `version` | yes | The plugin's semver at the pinned `ref` (from its `plugin.json`). | +| `minServerVersion` | no | Minimum Phlix server version required (from the plugin's `phlix_min_server_version` at the pinned `ref`). The admin UI shows "incompatible" pre-download when the running server is older. | +| `maxServerVersion` | no | Maximum Phlix server version supported (exclusive upper bound). | +| `verified` | no | Whether this entry has been reviewed by the catalog maintainer (`true` for all official entries). Un-verified entries are install-blocked by the server in default-deny mode. | +| `deprecated` | no | Whether this plugin is deprecated. Deprecated entries may still be installable but the server warns operators. | +| `yanked` | no | Whether this version has been withdrawn. Yanked entries are hidden from the catalog listing. | +| `deprecationMessage` | no | Human-readable message shown for deprecated/yanked entries. | | `summary` / `description` | no | Short / long description. | | `author` | no | Catalog-declared author/owner. | | `tags` | no | Free-form tags. | diff --git a/plugins.json b/plugins.json index 5423aa8..9775b89 100644 --- a/plugins.json +++ b/plugins.json @@ -14,6 +14,10 @@ "ref": "852b472a6aa73b80192af96310fcc789dbcaf8d7", "artifactSha256": "e8277e0ed419e4eb02245ad86896025bb6bb8ce90c348d2a7c7ea958724ce08c", "version": "0.1.0", + "minServerVersion": "0.10.0", + "verified": true, + "deprecated": false, + "yanked": false, "author": "detain", "tags": [ "anime", @@ -30,6 +34,10 @@ "ref": "43e1e7d2ce5108250a8c95a10e31ee86ba14e412", "artifactSha256": "5ef58eb42ec7e77fd454204169886cbafe0a36c60111c525710a0471b0e444c4", "version": "1.0.0", + "minServerVersion": "0.15.0", + "verified": true, + "deprecated": false, + "yanked": false, "author": "detain", "tags": [ "scrobbler", @@ -47,6 +55,10 @@ "ref": "ea51e0e754f79d1bc22091f622d448cd89fb4923", "artifactSha256": "c484dca258e68e9698a68b3d93639b6ff0db220cb047ff13ee62b3688f28cf41", "version": "0.1.0", + "minServerVersion": "0.10.0", + "verified": true, + "deprecated": false, + "yanked": false, "author": "detain", "tags": [ "anime", @@ -64,6 +76,10 @@ "ref": "ecd8b909b59779d12b7b49136bdb248c2ecd2334", "artifactSha256": "e5fdb4aa2de67ea019ef194dd098fd05d850cc9d8d1f14c5323c095714d7fb46", "version": "1.0.0", + "minServerVersion": "0.14.0", + "verified": true, + "deprecated": false, + "yanked": false, "author": "detain", "tags": [ "scrobbler", diff --git a/plugins.schema.json b/plugins.schema.json index 9cebadb..3f4cc96 100644 --- a/plugins.schema.json +++ b/plugins.schema.json @@ -89,6 +89,32 @@ "type": "string", "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-(?:(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*)?$" }, + "minServerVersion": { + "description": "Minimum Phlix server version required to run this plugin (from its plugin.json phlix_min_server_version at the pinned ref). The admin UI shows 'incompatible' before download when the running server is older.", + "type": "string", + "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-(?:(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*)?$" + }, + "maxServerVersion": { + "description": "Maximum Phlix server version supported by this plugin (exclusive upper bound). Optional.", + "type": "string", + "pattern": "^(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)(?:-(?:(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*)(?:\\.(?:0|[1-9]\\d*|\\d*[a-zA-Z-][0-9a-zA-Z-]*))*))?(?:\\+[0-9a-zA-Z-]+(?:\\.[0-9a-zA-Z-]+)*)?$" + }, + "verified": { + "description": "Whether this entry has been reviewed and verified by the catalog maintainer. An un-verified entry (false) is install-blocked by the server in default-deny mode.", + "type": "boolean" + }, + "deprecated": { + "description": "Whether this plugin entry is deprecated. Deprecated entries may still be installable but the server will warn operators.", + "type": "boolean" + }, + "yanked": { + "description": "Whether this plugin version has been yanked (withdrawn). A yanked entry is hidden from the catalog listing but still known to the server for operators who have it installed.", + "type": "boolean" + }, + "deprecationMessage": { + "description": "Human-readable message shown when a deprecated or yanked entry is encountered. Explains why and what to use instead.", + "type": "string" + }, "author": { "description": "Optional catalog-declared author/owner.", "type": "string"