Merge edge into feat/title-conditions: §3's zone presets
Two conflicts, both additive: schema.sql and purge.sql keep both phases' tables. Swagger fragment (61 paths) and routes.manifest (67 routes) regenerated against the pinned core; 455 server and 58 client tests pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
This commit is contained in:
@@ -1047,6 +1047,54 @@ module.exports = {
|
||||
},
|
||||
},
|
||||
},
|
||||
RustZonePreset: {
|
||||
type: 'object',
|
||||
description: 'A named set of ZoneManager flags and settings for one server, several, or every server (PLAN_REDESIGNS §3.1, D195). `line` is the text a zone step copies when the preset is picked (D210).',
|
||||
properties: {
|
||||
id: { type: 'integer', example: 3 },
|
||||
name: { type: 'string', example: 'Arena' },
|
||||
flags: { type: 'array', items: { type: 'string' }, example: ['NoBuild', 'NoPlayerLoot'] },
|
||||
settings: { type: 'object', additionalProperties: true, example: { radiation: 10, safezone: false } },
|
||||
allServers: { type: 'boolean', example: false },
|
||||
servers: { type: 'array', items: { type: 'string' }, example: ['main'] },
|
||||
line: { type: 'string', example: 'NoBuild, NoPlayerLoot, radiation=10, safezone=false' },
|
||||
updatedAt: { type: 'string', format: 'date-time', nullable: true },
|
||||
},
|
||||
},
|
||||
RustZonePresetInput: {
|
||||
type: 'object',
|
||||
required: ['name'],
|
||||
description: 'A preset to save. `servers` is required unless `allServers` is true. Every flag must be on each covered server that has reported its ZoneManager flags; settings are radiation (0–500), comfort (0–1), temperature (−100–100), safezone (boolean) and permission (1–32 of a–z, 0–9, _).',
|
||||
properties: {
|
||||
name: { type: 'string', example: 'Arena' },
|
||||
flags: { type: 'array', items: { type: 'string' }, example: ['NoBuild', 'NoPlayerLoot'] },
|
||||
settings: { type: 'object', additionalProperties: true, example: { radiation: 10 } },
|
||||
allServers: { type: 'boolean', example: false },
|
||||
servers: { type: 'array', items: { type: 'string' }, example: ['main'] },
|
||||
},
|
||||
},
|
||||
RustZones: {
|
||||
type: 'object',
|
||||
description: 'The zone presets page: each server with what its last hello said about ZoneManager (version, flags) and ZoneDomes (loaded, version, helper state, ready), every server’s flags grouped for the form, the settings a zone may carry, and the presets.',
|
||||
properties: {
|
||||
servers: {
|
||||
type: 'array',
|
||||
items: {
|
||||
type: 'object',
|
||||
properties: {
|
||||
id: { type: 'string', example: 'main' },
|
||||
name: { type: 'string', example: 'Main · Vanilla' },
|
||||
enabled: { type: 'boolean', example: true },
|
||||
zoneManager: { type: 'object', nullable: true, example: { version: '3.1.14', flagCount: 69, flags: ['NoBuild'] } },
|
||||
zoneDomes: { type: 'object', nullable: true, example: { loaded: true, version: '2.0.2', helper: { state: 'patched', version: '0.1.0' }, ready: true } },
|
||||
},
|
||||
},
|
||||
},
|
||||
groups: { type: 'array', items: { type: 'object' }, example: [{ group: 'Building', flags: [{ name: 'NoBuild' }] }] },
|
||||
settings: { type: 'array', items: { type: 'object' }, example: [{ key: 'radiation', type: 'float', min: 0, max: 500, label: 'Radiation' }] },
|
||||
presets: { type: 'array', items: { $ref: '#/components/schemas/RustZonePreset' } },
|
||||
},
|
||||
},
|
||||
RustVisibilityUpdate: {
|
||||
type: 'object',
|
||||
description: 'A change to who may see who is online. Either part may be omitted; a server set to null follows the fleet default again.',
|
||||
|
||||
Reference in New Issue
Block a user