# Release metadata for the deployable overlay. # # Consumed by the release workflow, which folds these values into the # manifest.json shipped inside the overlay tarball. The Runic Gateway installer # reads that manifest to decide what it is deploying and whether it is compatible # with the sidecar it is about to install. # # There is deliberately NO version key here. The release version is derived from # git tags and conventional commits by the release workflow, so there is no bump # commit to keep in sync and no way for this file to disagree with the tag. # ── The loopback wire-protocol version this overlay speaks ─────────────────── # # The plugin half of the compatibility contract. It MUST equal the sidecar's # PROTOCOL_VERSION (Rust-Link's sidecar/src/main.rs) for a deployment to work: # the sidecar rejects a mismatched WEBSITE with 409, and a mismatched PLUGIN is # worse, because the game link has no such check — it would simply mis-parse. # # That asymmetry is why this file exists. The plugin announces its protocol in # `server.hello`, which is only readable after the game server has booted with it # loaded — far too late for an installer to refuse a bad pairing. This # declaration is what lets the bundle CI check the pair BEFORE an operator # installs either half. # # Keeping it honest is a manual duty: when the protocol changes, bump it here in # the same change that alters the emitters, exactly as the sidecar bumps # PROTOCOL_VERSION and the module bumps its own constant. # # Current: 12 — the transport, the read path, identity, the permission mirror, # configuration from the site, first-party clans, a raid frame that names who # lives there, the event leases, the world verbs events place and give back, and # the rewards: a run's participation tally, kit credits and chat (PROTOCOL.md §16), # the map: its picture and everything that moves on it (PROTOCOL.md §17), and the # optional mods: BetterChat titles and group styles, and popups (PROTOCOL.md §18). protocol = 12 # ── Oxide compatibility ────────────────────────────────────────────────────── # # The overlay only ADDS a file — one plugin into `oxide/plugins/` — and patches # nothing, so it is expected to work on any reasonably current Oxide. This is the # oldest build it is known good on. # # There is no `patches_verified_against` key, and there is no `patches/` tier: # Rust's server is a binary and Oxide's hook API is the supported way in, so # there is nothing to diff against. That is the whole reason the Rust payload is # simpler than the ServUO one. min_oxide_version = "2.0.7585" # ── Carbon compatibility ───────────────────────────────────────────────────── # # The same file runs unchanged on Carbon (docs/modules/rust/PLAN.md R19); the # installer and the egg decide whether it lands in `oxide/plugins/` or # `carbon/plugins/`. This is the build R19 was proven on (PLAN.md §34.4). # # Neither floor is measured from a DLL by `doctor`: a plugin that compiled and # connected on this framework is the fact a floor only approximates, so a # connected plugin is the pass, and the floors are printed with any failure. min_carbon_version = "2.0.259" # The `oxide/plugins/` files this overlay expects to find already installed. They # are not shipped here — they are third-party plugins an operator installs from # uMod — and the installer's `doctor` reports a missing one rather than # installing it. Listing them is what turns a missing reward or zone into a # named prerequisite. # # The uMod **Clans** plugin is deliberately NOT listed (docs/modules/rust/PLAN.md # D47). Teams come from Rust's own clan system, which that plugin never touches, # so requiring it would split a server's players across two unrelated clan # systems. Phase 17 dropped the adapter it was meant to get (D134). # # **PopupNotifications is not listed either** (D141). It is optional: a popup # asked of a server without it is refused with a reason, and chat is the default. # BetterChat is optional in the same way — titles and group styles wait for it. requires_plugins = ["Kits", "ZoneManager"]