From d6c8ca6690818c45597ea0aa3d2ceae0bac71b0d Mon Sep 17 00:00:00 2001 From: shanelord01 Date: Fri, 9 Oct 2026 18:25:03 +1100 Subject: [PATCH 1/2] ci: allow submissions at the end of a catalogue section validate_order compared a changed entry with the entry after it even when that entry starts the next section. Section starts are where the URL order resets, so the next entry always sorts lower, and a plugin whose repository URL sorts last in its section could never pass. Only compare with the next entry when it is in the same section. Co-Authored-By: Claude Opus 5.5 --- validate_submission.py | 1 + 1 file changed, 1 insertion(+) diff --git a/validate_submission.py b/validate_submission.py index a856da2..658a6ad 100644 --- a/validate_submission.py +++ b/validate_submission.py @@ -120,6 +120,7 @@ def validate_order(catalogue: dict[str, dict], relevant_ids: set[str]) -> None: raise ValidationError(f"{plugin_id}: plugin is not sorted by repository URL") if ( index + 1 < len(ids) + and section_for(ids[index + 1], catalogue) == section and repository.casefold() > catalogue[ids[index + 1]].get("repository", "").casefold() ): raise ValidationError(f"{plugin_id}: plugin is not sorted by repository URL") From 1fbb78340be1a34244160d366276c3b4987dceb3 Mon Sep 17 00:00:00 2001 From: shanelord01 Date: Fri, 9 Oct 2026 18:25:03 +1100 Subject: [PATCH 2/2] catalogue: add io.github.shanelord01.galleon100sd Co-Authored-By: Claude Opus 5.5 --- catalogue.json | 9 +++++++++ icons/io.github.shanelord01.galleon100sd.png | Bin 0 -> 4793 bytes 2 files changed, 9 insertions(+) create mode 100644 icons/io.github.shanelord01.galleon100sd.png diff --git a/catalogue.json b/catalogue.json index 8267bad..fcba93c 100644 --- a/catalogue.json +++ b/catalogue.json @@ -221,6 +221,15 @@ "repository": "https://github.com/pomeo/opendeck-mirabox-n1", "description": "An unofficial OpenDeck plugin for the Mirabox N1" }, + "io.github.shanelord01.galleon100sd": { + "name": "Corsair Galleon 100 SD", + "author": "Shane Lord", + "repository": "https://github.com/shanelord01/opendeck-galleon", + "description": "OpenDeck device plugin for the Stream Deck built into the Corsair Galleon 100 SD keyboard", + "flags": { + "ai_assisted": true + } + }, "com.5e.hwinfo-reader": { "name": "HWiNFO Reader", "author": "5e", diff --git a/icons/io.github.shanelord01.galleon100sd.png b/icons/io.github.shanelord01.galleon100sd.png new file mode 100644 index 0000000000000000000000000000000000000000..7f432207e3933528cba031ecf56a7c37d64ab982 GIT binary patch literal 4793 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