Show File Format
.nque files are compact JSON validated against
crates/show/schemas/show.schema.json (JSON Schema draft-07). The schema uses
additionalProperties: false throughout, so unknown fields are rejected.
Top-level envelope
| Property | Type | Required | Notes |
|---|---|---|---|
format | string | yes | Constant "nque". |
version | number | yes | Constant 0 (pre-release). |
show | object | yes | A Show object (below). |
Show
| Property | Type | Required | Notes |
|---|---|---|---|
title | string | yes | |
description | string | yes | |
sections | array of Section | no | Defaults to []. |
Section
| Property | Type | Required | Notes |
|---|---|---|---|
id | string | yes | minLength: 1. |
title | string | yes | |
sections | array of Section | no | Nested child sections. |
cues | array of Cue | no | Cues for a leaf section. |
Cue
| Property | Type | Required | Notes |
|---|---|---|---|
id | string | yes | minLength: 1. |
text | string | yes |
Example
{
"format": "nque",
"version": 0,
"show": {
"title": "Hamlet",
"description": "A tragedy about a Danish prince's journey.",
"sections": [
{
"id": "act-1",
"title": "Act I",
"sections": [
{
"id": "scene-1",
"title": "Scene i",
"cues": [
{ "id": "cue-1", "text": "Who's there?" },
{ "id": "cue-2", "text": "Stand and unfold yourself." }
],
"sections": []
}
],
"cues": []
}
]
}
}
Validation rules
formatmust be exactly"nque".versionmust be exactly0.showis required and must containtitleanddescription.- Section and cue
ids must be non-empty strings. - No additional properties are allowed on any object.
Validation runs on both save (before writing) and load (before parsing into Rust types), so invalid files are never written and corrupt files are rejected with a descriptive error.
Versioning
version is pinned at 0 while the app is pre-release. A future version may
introduce migrations; the envelope exists to make that possible without breaking
existing files.