@idle-screens/schema 3.10.0 → 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@idle-screens/schema",
3
- "version": "3.10.0",
3
+ "version": "3.11.0",
4
4
  "description": "Declarative, agent-authorable saver format for idle-screens: validate a data spec, then compile it into a runnable, seeded, flash-safe SaverPlugin.",
5
5
  "license": "MIT",
6
6
  "author": "Shawn Partridge",
@@ -476,6 +476,11 @@
476
476
  "maximum": 1,
477
477
  "description": "Paint-level layer opacity (default 1): multiplies every entity's alpha and the life envelope at draw time. Unlike alpha (a range baked into entities), it is paint — setParam, a timeline key or a morph glide it without re-seeding. Native clients ignore it (1)."
478
478
  },
479
+ "group": {
480
+ "type": "string",
481
+ "pattern": "^[A-Za-z][A-Za-z0-9_-]{0,31}$",
482
+ "description": "The name of a groups entry this layer paints through (its transform wraps the layer's, its opacity multiplies)."
483
+ },
479
484
  "transform": {
480
485
  "type": "object",
481
486
  "additionalProperties": false,
@@ -484,7 +489,8 @@
484
489
  "y": { "type": "number", "minimum": -17280, "maximum": 17280, "description": "Translate in min(w,h) units, within ±2 (px under units: 'px')." },
485
490
  "scale": { "type": "number", "minimum": 0, "maximum": 8, "description": "Uniform scale about the viewport centre (default 1)." },
486
491
  "scaleX": { "type": "number", "minimum": -8, "maximum": 8, "description": "Extra horizontal scale; toward 0 reads as a turn about the vertical axis, negative mirrors (default 1)." },
487
- "rotate": { "type": "number", "minimum": -3600, "maximum": 3600, "description": "Degrees, clockwise, about the viewport centre." }
492
+ "rotate": { "type": "number", "minimum": -3600, "maximum": 3600, "description": "Degrees, clockwise, about the transform's origin." },
493
+ "origin": { "enum": ["viewport", "anchor"], "description": "What scale/scaleX/rotate turn about: 'viewport' (default) the viewport centre — a camera; 'anchor' the layer's own position point (with dx/dy; a list/table block's anchor; else the centre of its region) — a word punches in place on every aspect." }
488
494
  },
489
495
  "description": "Paint-level transform of the whole layer at draw time, about the viewport centre. Outside the structural signature, so it glides under setParam, a timeline key or a morph — a camera for timed pieces, a slow drift for ambient ones. Native clients ignore it (identity)."
490
496
  },
@@ -1556,6 +1562,32 @@
1556
1562
  "finish": {
1557
1563
  "$ref": "#/definitions/finish"
1558
1564
  },
1565
+ "groups": {
1566
+ "type": "object",
1567
+ "maxProperties": 16,
1568
+ "propertyNames": { "pattern": "^[A-Za-z][A-Za-z0-9_-]{0,31}$" },
1569
+ "additionalProperties": {
1570
+ "type": "object",
1571
+ "additionalProperties": false,
1572
+ "properties": {
1573
+ "opacity": { "type": "number", "minimum": 0, "maximum": 1, "description": "Multiplies every member layer's opacity." },
1574
+ "transform": {
1575
+ "type": "object",
1576
+ "additionalProperties": false,
1577
+ "properties": {
1578
+ "x": { "type": "number", "minimum": -17280, "maximum": 17280 },
1579
+ "y": { "type": "number", "minimum": -17280, "maximum": 17280 },
1580
+ "scale": { "type": "number", "minimum": 0, "maximum": 8 },
1581
+ "scaleX": { "type": "number", "minimum": -8, "maximum": 8 },
1582
+ "rotate": { "type": "number", "minimum": -3600, "maximum": 3600 },
1583
+ "origin": { "const": "viewport" }
1584
+ },
1585
+ "description": "Wraps every member's own transform; turns about the viewport centre (a camera)."
1586
+ }
1587
+ }
1588
+ },
1589
+ "description": "Named layer groups: members (layer.group) paint through the group's transform and opacity, so one steer, timeline key or morph moves a multi-layer subject as one thing. Paint, outside the structural signature. Native clients ignore it (identity, opacity 1)."
1590
+ },
1559
1591
  "timeline": {
1560
1592
  "type": "object",
1561
1593
  "required": ["keys"],