All checks were successful
PR Checks / plugin-checks (pull_request) Successful in -1m44s
The repository RunicNPC is built in (docs/runicnpc/PLAN.md §9, stage 0): - plugin/RunicNPC.cs: `// Requires: Kits` (D217), `[Info]` with the 0.0.0 placeholder the release stamps, `RunicNpc_ApiVersion()` (API 1), and `rnpc.status`, which reports the version and which hooks have fired. It spawns nothing. - plugin.toml: the API version, the framework floors it was loaded on (Oxide 2.0.7726, Carbon 2.0.259) and requires_plugins = ["Kits"]. - scripts/checkPlugin.js, adapted from Rust-Plugins': every hook listed and void unless written down; chat-command signatures; every RunicNpc_ call reachable by Call (the HumanNPC trap, PLAN.md §1.2); ApiVersion, `// Requires:` and [Info] agreeing with plugin.toml. 23 self-tests, including the real plugin and a CRLF checkout. - PR Checks on PRs into main and edge; the release workflow on main, with Rust-Plugins' release engine unchanged and an adapter that ships runicnpc-<ver>.tar.gz (runicnpc/RunicNPC.cs + manifest.json) and SHA256SUMS. No bundle dispatch until stage 4. - tools/: the rig panel scripts, with the panel and server ids moved into a git-ignored tools/rigs.json. `con.js` became `console.js`: CON is a reserved device name on Windows, and git there cannot open the file. - README, CONTRIBUTING (edge-based flow, AI disclosure, borrow-not-copy), SECURITY, the code of conduct, issue and PR templates. `feat:` so the cutover to main cuts the first release, 0.1.0. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
48 lines
2.7 KiB
TOML
48 lines
2.7 KiB
TOML
# Release metadata for RunicNPC.
|
|
#
|
|
# Consumed by the release workflow, which folds these values into the
|
|
# manifest.json shipped inside the release tarball. The Runic Gateway installer
|
|
# and the Pterodactyl egg read that manifest to decide what they are placing
|
|
# (docs/runicnpc/PLAN.md D224), and the bridge will read the same `api` at hello
|
|
# (stage 4).
|
|
#
|
|
# 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 API version other plugins call ───────────────────────────────────────
|
|
#
|
|
# The number a caller of `RunicNpc_*` relies on (PLAN.md §4). It MUST equal
|
|
# `ApiVersion` in plugin/RunicNPC.cs; `node scripts/checkPlugin.js` holds the two
|
|
# equal on every pull request. It moves when a call or a raised hook changes
|
|
# shape, not on every release.
|
|
#
|
|
# The plugin answers this at run time through `RunicNpc_ApiVersion()`, but only
|
|
# once a server has booted with it loaded — too late for an installer to refuse
|
|
# a RunicNPC too old for the bridge it is pairing with. Declaring it here is what
|
|
# lets a bundle check the pair BEFORE an operator installs it.
|
|
#
|
|
# Current: 1 — `RunicNpc_ApiVersion()` and nothing else (stage 0).
|
|
api = 1
|
|
|
|
# ── Framework floors ─────────────────────────────────────────────────────────
|
|
#
|
|
# The same file runs on Oxide and Carbon; the installer and the egg decide
|
|
# whether it lands in `oxide/plugins/` or `carbon/plugins/`. These are the builds
|
|
# it is known good on — the two rigs it was loaded on — not a measured minimum.
|
|
# (The bridge's Oxide floor is older, 2.0.7585; RunicNPC has never run on that.)
|
|
min_oxide_version = "2.0.7726"
|
|
min_carbon_version = "2.0.259"
|
|
|
|
# ── Plugins it cannot load without ───────────────────────────────────────────
|
|
#
|
|
# Kits is how every RunicNPC NPC is equipped, and it is required (D217). The
|
|
# plugin says so itself with `// Requires: Kits`, which stops either framework
|
|
# loading it without Kits; this list is the same fact for the installer's
|
|
# `doctor`, which reports a missing one rather than installing it. The PR check
|
|
# holds this list and the plugin's `// Requires:` lines equal.
|
|
#
|
|
# ZoneManager is NOT listed: a zone tether is optional (PLAN.md §6), and a
|
|
# profile that asks for one on a server without it is refused when it is saved.
|
|
requires_plugins = ["Kits"]
|