3.15.0 — Saved DialogScripts (CRUD)
Minor release. Adds DialogScript persistence so users can save + edit + re-render multi-character dialog scenes.
New endpoints
GET /api/v1/animation/dialog/script— list (newest byupdated_at)GET /api/v1/animation/dialog/script/{id}— fetch onePOST /api/v1/animation/dialog/script— create (server stamps UUID + timestamps)PUT /api/v1/animation/dialog/script/{id}— replace (preservescreated_at, bumpsupdated_at)POST /api/v1/animation/dialog/script/validate— shape-only validation without saving (returns{valid, error_messages, missing_creature_ids}so client forms can show inline errors)DELETE /api/v1/animation/dialog/script/{id}— soft delete (animations rendered from the script keep playing — they carry a CoW snapshot in metadata)
CoW snapshot
POST /api/v1/animation/dialog now accepts a script_id instead of inline turns. Rendered animations carry metadata.source_script_id + metadata.source_script_turns (copy-on-write) so old animations stay readable + traceable even after the script is edited.
Caps
MAX_DIALOG_SCRIPT_TURNS = 200, MAX_DIALOG_SCRIPT_TURN_TEXT = 4096, MAX_DIALOG_SCRIPT_TITLE = 256, MAX_DIALOG_SCRIPT_NOTES = 16384 — enforced by the DB-layer parser; same caps the inline-turns path uses.