@vosjs/cli 0.54.2 → 0.55.1
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/README.md +1 -1
- package/dist/{chunk-MTOCJ2LC.js → chunk-FQA7LFXG.js} +531 -136
- package/dist/chunk-FQA7LFXG.js.map +1 -0
- package/dist/cli.js +3 -3
- package/dist/index.js +1 -1
- package/dist/{run-H23EUWAJ.js → run-QREATZCN.js} +2 -2
- package/package.json +4 -4
- package/skills/VERSION +1 -1
- package/skills/vos-authoring/SKILL.md +31 -0
- package/skills/vos-port/SKILL.md +7 -2
- package/skills/vos-port/references/elements-and-context.md +7 -1
- package/dist/chunk-MTOCJ2LC.js.map +0 -1
- /package/dist/{run-H23EUWAJ.js.map → run-QREATZCN.js.map} +0 -0
package/dist/cli.js
CHANGED
|
@@ -730,7 +730,7 @@ async function cmdCheck(argv) {
|
|
|
730
730
|
return result.ok ? EXIT_OK : EXIT_ERROR;
|
|
731
731
|
}
|
|
732
732
|
async function delegate(argv, viaAlias = false) {
|
|
733
|
-
const { run } = await import("./run-
|
|
733
|
+
const { run } = await import("./run-QREATZCN.js");
|
|
734
734
|
if (viaAlias && argv[0]) {
|
|
735
735
|
process.stderr.write(
|
|
736
736
|
`note: "vos voila ${argv[0]}" is now "vos ${argv[0]}".
|
|
@@ -770,7 +770,7 @@ async function main() {
|
|
|
770
770
|
const engine = HELP_ENGINE.split("\n").filter(
|
|
771
771
|
(l) => l.startsWith(` vos ${cmd} `)
|
|
772
772
|
);
|
|
773
|
-
const { verbHelp } = await import("./run-
|
|
773
|
+
const { verbHelp } = await import("./run-QREATZCN.js");
|
|
774
774
|
const take = verbHelp(cmd);
|
|
775
775
|
process.stdout.write(
|
|
776
776
|
`${engine.join("\n")}
|
|
@@ -802,7 +802,7 @@ ${take.includes("no such verb") ? "" : take}`
|
|
|
802
802
|
main().then(async (code) => {
|
|
803
803
|
if (code === EXIT_OK) {
|
|
804
804
|
const verb = process.argv[2] ?? "";
|
|
805
|
-
const { HELP } = await import("./run-
|
|
805
|
+
const { HELP } = await import("./run-QREATZCN.js");
|
|
806
806
|
const documented = [
|
|
807
807
|
...helpFlagsFor(HELP_ENGINE, verb),
|
|
808
808
|
...helpFlagsFor(HELP, verb)
|
package/dist/index.js
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
takeBackdrop,
|
|
7
7
|
takeBrowserArgs,
|
|
8
8
|
verbHelp
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-FQA7LFXG.js";
|
|
10
10
|
import "./chunk-JX2YEL3M.js";
|
|
11
11
|
import "./chunk-6XPFWQKP.js";
|
|
12
12
|
export {
|
|
@@ -17,4 +17,4 @@ export {
|
|
|
17
17
|
takeBrowserArgs,
|
|
18
18
|
verbHelp
|
|
19
19
|
};
|
|
20
|
-
//# sourceMappingURL=run-
|
|
20
|
+
//# sourceMappingURL=run-QREATZCN.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vosjs/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.55.1",
|
|
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",
|
|
@@ -52,10 +52,10 @@
|
|
|
52
52
|
"mediabunny": "^1.55.7",
|
|
53
53
|
"playwright": "^1.49.0",
|
|
54
54
|
"@vosjs/editor": "^1.4.0",
|
|
55
|
-
"@vosjs/
|
|
56
|
-
"@vosjs/
|
|
57
|
-
"@vosjs/render-core": "^0.3.10",
|
|
55
|
+
"@vosjs/elements": "^0.10.0",
|
|
56
|
+
"@vosjs/core": "^0.25.5",
|
|
58
57
|
"@vosjs/shared": "^0.6.0",
|
|
58
|
+
"@vosjs/render-core": "^0.3.11",
|
|
59
59
|
"@vosjs/studio-core": "^0.33.2",
|
|
60
60
|
"@vosjs/timeline": "^0.4.1",
|
|
61
61
|
"@vosjs/tween": "^0.8.2"
|
package/skills/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.15.0
|
|
@@ -164,6 +164,37 @@ Configs pushed to vos.so get preview-rendered on a software-GL fleet: no
|
|
|
164
164
|
(too slow), and any fetched asset must be reachable and CORS-open. These are
|
|
165
165
|
fine for purely local renders on a real GPU.
|
|
166
166
|
|
|
167
|
+
## Your own passes: depth of field, refraction
|
|
168
|
+
|
|
169
|
+
The `postprocessing` list has no depth-of-field pass. For lens effects,
|
|
170
|
+
render the world yourself:
|
|
171
|
+
|
|
172
|
+
- Build the world in a private `THREE.Scene` with its own camera. In the
|
|
173
|
+
timeline's `onUpdate`, render it into `WebGLRenderTarget`s (`samples: 4`
|
|
174
|
+
plus a `DepthTexture` works, the render fleet included), run your passes,
|
|
175
|
+
then restore the renderer's target, clear colour and `autoClear`.
|
|
176
|
+
- `ctx.scene` holds ONE full-screen quad that composites the result
|
|
177
|
+
(`gl_Position = vec4(position.xy, 0.0, 1.0)`, `frustumCulled = false`, no
|
|
178
|
+
depth test). Add it with `ctx.scene.add()`: the engine never adds
|
|
179
|
+
`objects` for you, and a quad left out renders a flat black frame.
|
|
180
|
+
- Size the targets from `renderer.getDrawingBufferSize()`; rebuild them
|
|
181
|
+
when it changes.
|
|
182
|
+
|
|
183
|
+
Depth of field that reads:
|
|
184
|
+
|
|
185
|
+
- **Set the blur in pixels, by design.** A physical lens at scene scale
|
|
186
|
+
(f/1.6 at 40 cm) leaves a sharp zone a few millimetres deep, so the
|
|
187
|
+
subject you mean to show goes soft too. Decide what one depth step should
|
|
188
|
+
cost (8 to 20 px at 1080p) and solve for the lens strength.
|
|
189
|
+
- **Keep the subject square to the camera while it is in focus.** A plane
|
|
190
|
+
seen at an angle spans depth, and shallow focus sharpens only a strip of
|
|
191
|
+
it. Check that the blur at the subject's corners stays under 1 px.
|
|
192
|
+
- **Focus on a plane, not a point:** the focus distance is measured along
|
|
193
|
+
the camera's axis.
|
|
194
|
+
- **Judge focus at full size.** Render `vos still … --width 1920 --height
|
|
195
|
+
1080` and crop at 100%: a 1280×720 still or a contact sheet hides 10 px
|
|
196
|
+
of blur.
|
|
197
|
+
|
|
167
198
|
## Design principles
|
|
168
199
|
|
|
169
200
|
- **Visual impact**: bloom for glow (even 0.3–0.5 elevates); emissive
|
package/skills/vos-port/SKILL.md
CHANGED
|
@@ -159,8 +159,13 @@ approximation.
|
|
|
159
159
|
the palette from its custom properties, faces with their catalog match,
|
|
160
160
|
media, scenes, the CSS no element can say) into `port/inventory.json`,
|
|
161
161
|
with stills from its render. A HyperFrames word is laid out where it
|
|
162
|
-
SETTLES in its scene. A Remotion project
|
|
163
|
-
|
|
162
|
+
SETTLES in its scene. A Remotion project (cli 0.55+) is bundled with its
|
|
163
|
+
own `@remotion/bundler` and read the same way, so run `npm install` in it
|
|
164
|
+
first: its `<Sequence>`s are the scenes, named by what they hold, its
|
|
165
|
+
colour constants name the palette, `<Audio>` is the score. Each scene's
|
|
166
|
+
ground is measured, and a word animated letter by letter is one `split`
|
|
167
|
+
word. On an older CLI, read a Remotion project's words in `src/`. This IS
|
|
168
|
+
the port's contract.
|
|
164
169
|
3. **Scaffold**: `npx vos port scaffold` writes `port/program/program.mjs`
|
|
165
170
|
(every word a bound element, every colour a key, the knobs, a label and a
|
|
166
171
|
TODO per scene, each scene's words shown in its window, a painter only
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- Generated by scripts/build-element-reference.mjs from @vosjs/core 0.25.
|
|
1
|
+
<!-- Generated by scripts/build-element-reference.mjs from @vosjs/core 0.25.5, @vosjs/elements 0.9.0, @vosjs/timeline 0.4.1 and @vosjs/shared 0.6.0. Do not edit by hand: re-run the script. -->
|
|
2
2
|
|
|
3
3
|
# Elements, the context and eases: the declarations
|
|
4
4
|
|
|
@@ -353,6 +353,12 @@ unit boundaries, the line aligned by `font.align`). So a per-letter tween
|
|
|
353
353
|
moves each letter FROM its laid-out place (`from`, or `s.y + dy`), never
|
|
354
354
|
to a position computed by hand.
|
|
355
355
|
|
|
356
|
+
A split element's `props` are the WORD (`@vosjs/elements` 0.10+): `x`/`y`
|
|
357
|
+
offset every unit, `opacity` multiplies each unit's own, `scale` and
|
|
358
|
+
`rotation` scale and turn the word about its centre, so letters rise
|
|
359
|
+
through `el.segments` while `el.props` drifts or fades the word, two
|
|
360
|
+
tweens, never one per letter. Before 0.10 they moved the FIRST letter only.
|
|
361
|
+
|
|
356
362
|
Writing any of `content`, `fontSize`, `fontFamily`, `fontWeight`, `fontStyle`, `letterSpacing`, `color`, `strokeColor`, `strokeWidth` on a text element's `props`
|
|
357
363
|
re-rasters it (the runtime's own list), so a scramble or a counter writes
|
|
358
364
|
`el.props.content` in `onFrame` and a colour change sets `el.props.color`.
|