Skip to content

feature: plugin directory - #557

Merged
lukepolo merged 5 commits into
mainfrom
feat/game-plugins-and-modes
Aug 19, 2026
Merged

feature: plugin directory#557
lukepolo merged 5 commits into
mainfrom
feat/game-plugins-and-modes

Conversation

@lukepolo

Copy link
Copy Markdown
Contributor

No description provided.

@lukepololukepolo changed the title Add the plugin directory, game modes and per-node plugin installsfeature: plugin directoryAug 19, 2026
The mode picker never rendered: the query asked game_modes for a `runtime`
column that does not exist, so Hasura rejected the whole document and the
list stayed empty. Compatibility comes from the computed
`supported_runtimes`, where an empty array means the mode's plugins target
different frameworks and it runs nowhere.
Also from the review of this branch:
- a mode's plugins are read in load_order and sorted again before they are
re-indexed on save, so opening a mode and pressing Save no longer
reshuffles the order the server links them in;
- delete + insert of those rows go in one mutation document, so a failed
insert rolls back rather than leaving the mode with no plugins at all;
- /plugins/<slug> carries the admin middleware the index page has, and its
`desired` subscription the skip guard its three siblings have;
- install/uninstall report what they can actually know. Both actions return
{ success }, so the partial-failure branch was unreachable and every run
toasted success anyway; convergence is what the per-node states render;
- the two draft-game steps that were not renumbered when Mode was inserted
ahead of Format.
A plugin whose registry entry says it cannot work while the framework
enforces Valve's server guidelines now gets a switch on its own page, off
until an administrator sets it, next to the same GSLT warning 5stack Ranks
carries. It applies to that plugin alone.
**Add a plugin** on the directory takes a release URL and the framework it was
built for; everything else -- slug, version, name -- is read from the URL where
it can be, and asked for where it cannot. The entry is marked Custom on the card
and its page, because nobody reviewed it and the operator is vouching for it
themselves.
Removing one is offered only once it is uninstalled everywhere, so the files
leave the nodes before the entry describing them does. A registry plugin has no
such button: the next sync would bring it back.
@lukepolo
lukepoloforce-pushed the feat/game-plugins-and-modes branch from 94b8254 to 9c64554CompareAugust 19, 2026 13:21
@lukepolo
lukepolo merged commit 7449edc into mainAug 19, 2026
1 check failed
@lukepolo
lukepolo deleted the feat/game-plugins-and-modes branch August 19, 2026 13:49
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@lukepolo