First start
Only whendata/displays.json is missing, the server:
- Reads and validates the default as a JSON array.
- Writes it to the active path.
- Reads the active path back.
- Verifies that it is a decodable array.
SSD-PERSIST-INIT-005.
Saves
The complete normalized display array is saved after create, settings/name/transform changes, delete, and the serverSetDisplayServiceFilter export.
Runtime page changes, nearby viewer controls, map pan, bodycam feed state, preview state, and SetDisplayPage are not persisted.
Because the underlying write function does not provide a reliable success result on every runtime, the resource treats readback as authoritative. A save succeeds only after the file is non-empty, decodes as an array, and exactly matches the normalized state that was written.
SSD-PERSIST-003 reports one of these reasons:
CLIENT_BROADCAST_FAILED; that is not a persistence failure.
Restart behavior
At startup, each decoded record is normalized and validated. Valid entries keep their opaque ID/timestamps; invalid entries are skipped withSSD-PERSIST-002. There is no explicit schemaVersion field in the persisted array and no hot-reload command.
Defaults in config.lua do not overwrite valid saved per-display values. Current normalization provides the load-time compatibility boundary, including legacy theme fallback.
Backup and restore
- Stop
sonoran-stationdisplay. - Copy
data/displays.json,config.lua, locale changes, and server webhook configuration to a protected backup. - Replace/update the resource as directed.
- Merge customer configuration into the new schema.
- Restore
data/displays.json. - Start the resource and confirm the loaded display count.
Console repair
When the active file is unreadable and no good backup is available, run from the server console:Codes
Use the in-game/server Diagnostics snapshot and local audit ID when contacting support.

