@vosjs/cli 0.53.2 → 0.53.3

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": "@vosjs/cli",
3
- "version": "0.53.2",
3
+ "version": "0.53.3",
4
4
  "description": "The vos CLI: record the real product from a scripted browser flow, auto-zoom from the cursor track, cut as data in doc.json, render deterministic video and stills, deliver a release's media per destination spec, and sync with vos.so. One binary, every verb, MIT.",
5
5
  "type": "module",
6
6
  "license": "MIT",
package/skills/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.0
1
+ 0.9.1
@@ -60,8 +60,11 @@ not in `node_modules`.
60
60
  (`@vosjs/cli` 0.52+). Never a `data:` URI in an audio element.
61
61
  8. **Faces from the catalog.** `fonts: [{ family, weight, url }]` with
62
62
  `https://assets.vos.so/fonts/<slug>/<weight>.woff2` (`GET
63
- https://vos.so/api/fonts`). A face the catalog lacks is SUBSTITUTED and
64
- the substitution is said in the push note.
63
+ https://vos.so/api/fonts`). An italic the catalog hosts is in the
64
+ family's `italicFiles` (`<weight>-italic.woff2`): declare it as its own
65
+ entry with `style: 'italic'` and set `font.style: 'italic'` on the
66
+ element. A face the catalog lacks is SUBSTITUTED and the substitution is
67
+ said in the push note.
65
68
 
66
69
  ## The coordinates, measured (these cost the reference port three rounds)
67
70
 
@@ -73,15 +76,17 @@ not in `node_modules`.
73
76
  - **`rotation` is degrees, counter-clockwise**: CSS `rotate(12deg)` is
74
77
  `rotation: -12`.
75
78
  - **A static offset goes in the config**, `transform: { translateX,
76
- translateY }` in design pixels, never a `tl.set` on `props.x/y`, for any
77
- text whose content or colour changes live: every re-raster lays the
78
- element out again from its config and drops a tweened position.
79
- - **Text that `onFrame` writes is missing from a still.** A scramble or a
80
- counter written into `props.content` each frame shows in `vos render`
81
- output (a frame late) and is BLANK in `vos still` and in the vos.so
82
- thumbnail. Check it in a rendered frame, and set the program's cover
83
- (`vos push --still <t>`, cli 0.53+) at a moment where that text is not the
84
- point.
79
+ translateY }` in design pixels, and motion on `props.x/y`. A re-raster
80
+ (new words, a new colour) keeps the offset a tween added from
81
+ `@vosjs/elements` 0.8.3; before it the element snapped back to its
82
+ config position.
83
+ - **Text that `onFrame` writes is in its own frame** from `@vosjs/core`
84
+ 0.25.2: a scramble or a counter written into `props.content` shows in
85
+ `vos still`, the vos.so thumbnail and every exported frame. Before it the
86
+ text landed a frame late in video and a still showed another frame's
87
+ words, so a program compiled earlier gains the fix on its next push.
88
+ Still choose the program's cover (`vos push --still <t>`, cli 0.53+) at
89
+ the moment that sells it.
85
90
  - **Transform origin is the centre.** Remotion's `transformOrigin: 'right
86
91
  center'` with `scaleX` becomes a centre scale plus an `x` tween that keeps
87
92
  the right edge still: `{ scaleX: 0, x: x0 + (width / 2) * k }`.
@@ -166,9 +171,8 @@ approximation.
166
171
  ```
167
172
 
168
173
  A number does not catch a missing element: look at every side-by-side.
169
- Stills are for layout; text that `onFrame` writes shows in `vos render`
170
- output, not in `vos still` (a known capture gap), so check it in a
171
- rendered frame.
174
+ Text that `onFrame` writes is in the still too (core 0.25.2+); on an
175
+ older CLI check it in a rendered frame.
172
176
  6. **Knob honesty**: one `--set data.<key>=<value>` still per param.
173
177
  7. **Push** with the score: `vos push config.json --folder <slug> --label
174
178
  "port of <source>" --note "<what was substituted, what is a painter>"
@@ -1,4 +1,4 @@
1
- <!-- Generated by scripts/build-element-reference.mjs from @vosjs/core 0.25.1, @vosjs/elements 0.8.2 and @vosjs/timeline 0.4.1. Do not edit by hand: re-run the script. -->
1
+ <!-- Generated by scripts/build-element-reference.mjs from @vosjs/core 0.25.2, @vosjs/elements 0.8.3 and @vosjs/timeline 0.4.1. Do not edit by hand: re-run the script. -->
2
2
 
3
3
  # Elements, the context and eases: the declarations
4
4
 
@@ -327,13 +327,20 @@ elements.
327
327
  * GSAP-animatable properties exposed on each element instance
328
328
  */
329
329
  interface ElementProps {
330
+ /**
331
+ * RENDER pixels from the frame centre, x right, y DOWN. Unlike every config
332
+ * number (design px of a 1080-high frame), so an offset authored in design
333
+ * px is scaled: `x0 + dx * (ctx.resolution.height / 1080)`.
334
+ */
330
335
  x: number;
336
+ /** RENDER pixels from the frame centre, y DOWN (see `x`). */
331
337
  y: number;
332
338
  z: number;
333
339
  opacity: number;
334
340
  scale: number;
335
341
  scaleX: number;
336
342
  scaleY: number;
343
+ /** Degrees, counter-clockwise (CSS `rotate(12deg)` is `rotation: -12`). */
337
344
  rotation: number;
338
345
  rotationX: number;
339
346
  rotationY: number;
@@ -389,6 +396,12 @@ interface ElementInstance {
389
396
  * face landing after first paint re-draws over the fallback stack).
390
397
  */
391
398
  refreshRaster?: () => boolean;
399
+ /**
400
+ * Apply queued raster writes now. The engine's frame calls it for every
401
+ * element after onFrame and before the draw, so text written in a frame is
402
+ * in that frame (stills included). A no-op when nothing is queued.
403
+ */
404
+ flushRaster?: () => void;
392
405
  /** Re-rasterize canvas-backed textures for a new output resolution */
393
406
  updateResolution?: (resolution: unknown) => boolean;
394
407
  /** Remove element from scene */
@@ -110,8 +110,8 @@ const config = {
110
110
  {
111
111
  id: 'subtitle',
112
112
  type: 'text',
113
- // Bound to the full words: onFrame writes each frame's string, and a
114
- // still capture, which misses onFrame's writes, shows these words.
113
+ // Bound to the full words: onFrame writes each frame's string over
114
+ // them, and a knob on `subtitle` changes what the scramble resolves to.
115
115
  content: { $data: 'subtitle' },
116
116
  font: { family: 'JetBrains Mono', size: 26, weight: 500, color: { $data: 'paper' }, letterSpacing: 6 },
117
117
  position: 'center',