@vosjs/cli 0.56.0 → 0.57.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/dist/{chunk-XXAY42XS.js → chunk-Z74Y4WNW.js} +16 -5
- package/dist/{chunk-XXAY42XS.js.map → chunk-Z74Y4WNW.js.map} +1 -1
- package/dist/cli.js +3 -3
- package/dist/index.js +1 -1
- package/dist/{run-OIZ7NQPU.js → run-JE4G42EJ.js} +2 -2
- package/package.json +7 -7
- package/skills/VERSION +1 -1
- package/skills/vos-authoring/SKILL.md +31 -11
- package/skills/vos-create/SKILL.md +2 -0
- package/skills/vos-port/SKILL.md +2 -2
- package/skills/vos-port/references/elements-and-context.md +8 -2
- package/skills/vos-port/references/remotion.md +1 -1
- /package/dist/{run-OIZ7NQPU.js.map → run-JE4G42EJ.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-JE4G42EJ.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-JE4G42EJ.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-JE4G42EJ.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-Z74Y4WNW.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-JE4G42EJ.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vosjs/cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.57.0",
|
|
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",
|
|
@@ -51,14 +51,14 @@
|
|
|
51
51
|
"acorn-walk": "^8.3.5",
|
|
52
52
|
"mediabunny": "^1.55.7",
|
|
53
53
|
"playwright": "^1.49.0",
|
|
54
|
-
"@vosjs/core": "^0.25.
|
|
54
|
+
"@vosjs/core": "^0.25.6",
|
|
55
55
|
"@vosjs/editor": "^1.4.0",
|
|
56
|
-
"@vosjs/
|
|
57
|
-
"@vosjs/elements": "^0.10.0",
|
|
56
|
+
"@vosjs/elements": "^0.10.1",
|
|
58
57
|
"@vosjs/render-core": "^0.3.11",
|
|
59
|
-
"@vosjs/
|
|
60
|
-
"@vosjs/
|
|
61
|
-
"@vosjs/
|
|
58
|
+
"@vosjs/shared": "^0.6.0",
|
|
59
|
+
"@vosjs/studio-core": "^0.33.3",
|
|
60
|
+
"@vosjs/timeline": "^0.5.0",
|
|
61
|
+
"@vosjs/tween": "^0.8.3"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
64
|
"@types/node": "^22",
|
package/skills/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.18.0
|
|
@@ -20,6 +20,8 @@ the render: a config produces the same frames on every machine.
|
|
|
20
20
|
3. **Generate the config**: write a complete, valid VosConfigJson to
|
|
21
21
|
`<kebab-case-name>.json` wherever the project keeps configs.
|
|
22
22
|
4. **Validate locally** (see below), then render or preview it.
|
|
23
|
+
5. **Push it and give the link** (see below): the work is done when the
|
|
24
|
+
user has a link that plays it, not when a file sits on disk.
|
|
23
25
|
|
|
24
26
|
If the user provides an image, analyze its visual style (colors, mood,
|
|
25
27
|
composition, lighting) and translate those qualities into the scene.
|
|
@@ -44,12 +46,25 @@ vos preview my-config.json # local playback page
|
|
|
44
46
|
vos info my-config.json
|
|
45
47
|
```
|
|
46
48
|
|
|
47
|
-
##
|
|
49
|
+
## Push it and give the link
|
|
48
50
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
A vos program is made to be watched, tuned in the studio and remixed, so
|
|
52
|
+
finish by pushing it and handing back the link. Skip the push only when the
|
|
53
|
+
user said to keep the work local.
|
|
54
|
+
|
|
55
|
+
Find a credential in this order, without printing it: `VOS_API_KEY`, then
|
|
56
|
+
the first line of `~/.config/vos/credentials`. With one, push:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
vos push my-config.json --title "…" --desc "one line" --wait
|
|
60
|
+
# --wait stays until the cover has rendered, then prints the links
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
The vos lands PRIVATE on the key owner's shelf: only they can open the
|
|
64
|
+
links, and publishing stays their act on vos.so. Keyed pushes never expire;
|
|
65
|
+
iterate with `vos push my-config.json --vos <id>`.
|
|
66
|
+
|
|
67
|
+
No credential at all? Use the claimable push instead of stopping:
|
|
53
68
|
|
|
54
69
|
```bash
|
|
55
70
|
vos push my-config.json --claimable --title "…"
|
|
@@ -62,12 +77,16 @@ curl -s -X POST https://vos.so/api/claim \
|
|
|
62
77
|
# → { "claimUrl": "https://vos.so/claim/…", "expiresAt": "…" }
|
|
63
78
|
```
|
|
64
79
|
|
|
65
|
-
Hand `claimUrl` to the user and nowhere else
|
|
66
|
-
the only credential. It lasts 72 hours
|
|
80
|
+
Hand `claimUrl` to the user and nowhere else: it is the only reference and
|
|
81
|
+
the only credential. It lasts 72 hours, and unclaimed work is deleted after
|
|
67
82
|
that (re-push if it lapses). Claiming moves the vos into the user's
|
|
68
|
-
library.
|
|
69
|
-
|
|
70
|
-
|
|
83
|
+
library. Programs only, config ≤200KB, 5 pushes per day per network.
|
|
84
|
+
|
|
85
|
+
End your reply with the links, never only a file path: the watch page
|
|
86
|
+
(`https://vos.so/vos/<id>`, it plays the program) and the studio
|
|
87
|
+
(`https://vos.so/studio?vos=<id>`, where the user tunes your knobs), or
|
|
88
|
+
the claim link when there was no credential. A local MP4 is a bonus, not
|
|
89
|
+
the deliverable.
|
|
71
90
|
|
|
72
91
|
## VosConfigJson structure
|
|
73
92
|
|
|
@@ -162,7 +181,8 @@ Values must reference declared param keys with matching types.
|
|
|
162
181
|
Configs pushed to vos.so get preview-rendered on a software-GL fleet: no
|
|
163
182
|
`THREE.DoubleSide` on transmission materials (hard hang), no `dispersion`
|
|
164
183
|
(too slow), and any fetched asset must be reachable and CORS-open. These are
|
|
165
|
-
fine for purely local renders on a real GPU.
|
|
184
|
+
fine for purely local renders on a real GPU. They are things to avoid, never
|
|
185
|
+
a reason to skip the push: keep transmission single-sided, and push.
|
|
166
186
|
|
|
167
187
|
## Your own passes: depth of field, refraction
|
|
168
188
|
|
|
@@ -180,6 +180,8 @@ publish; promoting is the human's gesture on vos.so.
|
|
|
180
180
|
**Look at what landed.** Every push renders a still within about 15
|
|
181
181
|
seconds: `GET /api/vos/{id}`, follow `contentUrls.thumbnail`, and view the
|
|
182
182
|
image before reporting done. A push you never looked at is not finished.
|
|
183
|
+
Then end your reply with the links: the watch page
|
|
184
|
+
(`https://vos.so/vos/<id>`) and the studio (`https://vos.so/studio?vos=<id>`).
|
|
183
185
|
|
|
184
186
|
**Pace a batch**: back-to-back pushes are fine at the quota (the render
|
|
185
187
|
queue spaces browser launches and backs off itself). Verify state after a
|
package/skills/vos-port/SKILL.md
CHANGED
|
@@ -171,7 +171,7 @@ approximation.
|
|
|
171
171
|
TODO per scene, each scene's words shown in its window, a painter only
|
|
172
172
|
when the inventory needs one, and the PAINTER STARTER as
|
|
173
173
|
`content.refs.lib` when the piece needs a painter or springs: Remotion's
|
|
174
|
-
`spring` to the frame, `
|
|
174
|
+
`spring` to the frame, `springSeconds` for a tween eased `spring(...)`, `interpolate`,
|
|
175
175
|
`bezier`, seeded noise; never read another engine's source for these),
|
|
176
176
|
`doc.json` with the score as a track, and
|
|
177
177
|
`port/REPORT.md` (substituted faces, gaps). Read the report first. On an
|
|
@@ -206,7 +206,7 @@ stated approximation:
|
|
|
206
206
|
| a colour per split unit (`charStyle` making one letter red) | segments carry x/y/opacity/scale/rotation only: a separate element, or paint it |
|
|
207
207
|
| `mixBlendMode` | no blend modes on elements: paint it |
|
|
208
208
|
| a shape's colour as a knob | an svg's colours are compiled in (static `colors`): paint the shape if its colour must change live |
|
|
209
|
-
| `spring()` |
|
|
209
|
+
| `spring()` | the `spring(damping, stiffness, mass)` ease (cli 0.57+), duration `lib.springSeconds(config)`: Remotion's spring on the timeline, exact. Older: `lib.springTo` (0.56), else `back.out(n)` by eye |
|
|
210
210
|
| `@remotion/noise`, SVG `feTurbulence` | the painter, on the starter's `lib.noise2D/noise3D` (the same character, not the same values) |
|
|
211
211
|
| a group transform (scale the whole scene) | no element groups: tween each element the same way |
|
|
212
212
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!-- Generated by scripts/build-element-reference.mjs from @vosjs/core 0.25.5, @vosjs/elements 0.
|
|
1
|
+
<!-- Generated by scripts/build-element-reference.mjs from @vosjs/core 0.25.5, @vosjs/elements 0.10.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
|
|
|
@@ -722,7 +722,13 @@ An `ease` string anywhere GSAP takes one. Beyond the names below the
|
|
|
722
722
|
engine accepts the parameterized forms `back.out(1.7)`,
|
|
723
723
|
`elastic.out(1, 0.3)`, `steps(5)`, and `css-bezier(x1, y1, x2, y2)`,
|
|
724
724
|
which is CSS's `cubic-bezier` and Remotion's `Easing.bezier` with the same
|
|
725
|
-
four numbers (`cubic-bezier` itself is not a name)
|
|
725
|
+
four numbers (`cubic-bezier` itself is not a name), and (`@vosjs/timeline`
|
|
726
|
+
0.5+) `spring(damping, stiffness, mass)`, defaults 10, 100, 1 (`spring`,
|
|
727
|
+
`spring.in`, `spring.inOut` too): a damped spring stretched over the tween,
|
|
728
|
+
landing exactly on its target. A tween as long as the spring's settle time
|
|
729
|
+
moves as Remotion's `spring()` does, frame for frame; a ported program reads
|
|
730
|
+
that duration from `content.refs.lib.springSeconds({ damping, stiffness })`,
|
|
731
|
+
and a longer one stretches it as `durationInFrames` does. A bare family
|
|
726
732
|
(`'power2'`) means `.out`. **An unknown name is not an error: it plays
|
|
727
733
|
linear.** `vos check` warns `unknown-ease` for a literal `ease: '…'` it
|
|
728
734
|
cannot resolve; through `@vosjs/core` 0.25.0 that warning also fired on
|
|
@@ -16,7 +16,7 @@ rows name what has no element equivalent yet.
|
|
|
16
16
|
| `useCurrentFrame()` | nothing in a tween (the timeline is the clock); `ctx.time * fps` inside `onFrame` |
|
|
17
17
|
| `interpolate(f, [a, b], [x, y], { easing, extrapolate: 'clamp' })` | `tl.fromTo(props, { p: x }, { p: y, duration: (b - a) / fps, ease }, a / fps)` |
|
|
18
18
|
| `Easing.bezier(x1, y1, x2, y2)` | `ease: 'css-bezier(x1, y1, x2, y2)'` (exact) |
|
|
19
|
-
| `spring({ frame, fps, config })` | the
|
|
19
|
+
| `spring({ frame, fps, config })` | the `spring(damping, stiffness, mass)` ease ON THE TIMELINE (cli 0.57+): `tl.to(p, { y: 0, ease: 'spring(200)', duration: content.refs.lib.springSeconds({ damping: 200 }) }, at)` moves exactly as Remotion's spring; a longer duration stretches it as `durationInFrames` does. Never compute a spring in `onFrame`. `lib.spring({ frame, fps, config })` is the value, for a painter. On cli 0.56, `lib.springTo`; older, `back.out(n)` by eye |
|
|
20
20
|
| `<Sequence from durationInFrames>` | `tl.addLabel(name, from / fps)` and the scene's elements tweened in and out inside that window |
|
|
21
21
|
| `<TransitionSeries>` + `fade()` | opacity tweens across the overlap window |
|
|
22
22
|
| `<AbsoluteFill>` + flex centring | `position: 'center'`; offsets in `transform: { translateX, translateY }` (design px) |
|
|
File without changes
|