feat(rust): zone presets, and the zone step's options, messages and dome (PLAN_REDESIGNS §3, D210)
Admin → Rust zone presets: named sets of ZoneManager flags and settings for one server, several, or every server (D195), ticked in groups read from each server's own ZoneManager list in its last hello (D211). A flag not on a covered server is refused on save with the server named; two presets of one name may not share a server. rust.zone.open gains options (one line, NoBuild, radiation=10), enterMessage, leaveMessage, delivery, dome and domeStack. The options field's dropdown is rust.options.zone_presets, whose row VALUE is the preset's line, so picking one copies it into the step (D210) and no published event changes when a preset does. The line and the dome are checked against the server's hello on save and in a dry run; bad-option and dome-unavailable are permanent. Schema: rust_zone_presets, rust_zone_preset_servers. Swagger fragment and routes.manifest regenerated against the pinned core f0e7d2a. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
@@ -26,9 +26,10 @@ import Permissions from './routes/admin/Permissions.jsx'
|
||||
import ModConfig from './routes/admin/ModConfig.jsx'
|
||||
import Visibility from './routes/admin/Visibility.jsx'
|
||||
import ServerSettings from './routes/admin/ServerSettings.jsx'
|
||||
import ZonePresets from './routes/admin/ZonePresets.jsx'
|
||||
import UserRustSections from './routes/admin/UserRustSections.jsx'
|
||||
import FooterStatus from './components/FooterStatus.jsx'
|
||||
import { IconEye, IconKey, IconLink, IconServer, IconSliders } from './icons.jsx'
|
||||
import { IconEye, IconKey, IconLink, IconServer, IconSliders, IconZone } from './icons.jsx'
|
||||
|
||||
// The module id, exactly as `module.json` spells it. Core keys the registry by it
|
||||
// and prefixes every route path with it.
|
||||
@@ -109,6 +110,9 @@ registry.registerRoutes(ID, {
|
||||
// it, a server row was written only through the API, and D130's wipe
|
||||
// schedule needed somewhere to be typed.
|
||||
{ path: 'servers', element: <ServerSettings /> },
|
||||
// Zone presets (PLAN_REDESIGNS §3.1, D210). Core's step editor has single-
|
||||
// value fields, so a zone's flags are ticked here and a step copies the set.
|
||||
{ path: 'zones', element: <ZonePresets /> },
|
||||
],
|
||||
})
|
||||
|
||||
@@ -159,6 +163,7 @@ registry.registerNav(ID, {
|
||||
{ label: 'Rust mod config', to: '/admin/rust/config', icon: IconSliders },
|
||||
{ label: 'Rust visibility', to: '/admin/rust/visibility', icon: IconEye },
|
||||
{ label: 'Rust servers', to: '/admin/rust/servers', icon: IconServer },
|
||||
{ label: 'Rust zone presets', to: '/admin/rust/zones', icon: IconZone },
|
||||
],
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user