greenlight-motion 0.1.2 → 0.1.4

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": "greenlight-motion",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "GreenLight Motion Engine: AI agents make motion-design videos (3D, camera, effects, transitions, text animation, particles, motion blur) with the GreenLight Dash Video Editor's own engine, in the user's browser.",
5
5
  "keywords": [
6
6
  "video",
package/skill/SKILL.md CHANGED
@@ -18,7 +18,7 @@ You never write UI or animation code. If something is not in the format, it is n
18
18
  ## Setup (once per machine)
19
19
 
20
20
  ```
21
- npx greenlight-motion@0.1.2 doctor
21
+ npx greenlight-motion@0.1.4 doctor
22
22
  ```
23
23
 
24
24
  It checks Node 18+, Chrome or Edge, WebGPU and H.264 encoding, and prints a fix for anything missing. Do not install
@@ -32,7 +32,7 @@ animation presets (the same converter the GreenLight Motion connector uses in Cl
32
32
  keyframes rarely look as good. The format, the design rules and the catalogues: `skill/references/scene-script.md`.
33
33
 
34
34
  ```
35
- npx greenlight-motion@0.1.2 script <folder> --from scenes.json # or write <folder>/script.json, then: script <folder>
35
+ npx greenlight-motion@0.1.4 script <folder> --from scenes.json # or write <folder>/script.json, then: script <folder>
36
36
  ```
37
37
 
38
38
  Then `check` and `stills` (below), fix the SCRIPT and run `script` again — it rewrites `project.json`. For what a
@@ -41,14 +41,14 @@ workflow below and stop running `script` (it refuses to overwrite a project edit
41
41
 
42
42
  ## Workflow
43
43
 
44
- 1. `npx greenlight-motion@0.1.2 init <folder>` — starts from a working example (title, subtitle, accent line, four
44
+ 1. `npx greenlight-motion@0.1.4 init <folder>` — starts from a working example (title, subtitle, accent line, four
45
45
  options). `--from file.json` starts from a project you have (for example one exported from GreenLight Dash).
46
46
  2. Edit `<folder>/project.json` — for changes to an EXISTING project prefer `apply` (below): it checks every edit and
47
47
  applies all or nothing. Put pictures, video, sound and fonts in `<folder>/assets/` and refer to them as
48
48
  `"asset:<file>"` (e.g. `"url": "asset:product.png"`).
49
- 3. `npx greenlight-motion@0.1.2 check <folder>` — fix everything it lists (missing files, template mistakes, blank
49
+ 3. `npx greenlight-motion@0.1.4 check <folder>` — fix everything it lists (missing files, template mistakes, blank
50
50
  frames, page errors). `--json` for machine output.
51
- 4. `npx greenlight-motion@0.1.2 stills <folder>` — renders frames and **a labelled contact sheet**. Open and look at
51
+ 4. `npx greenlight-motion@0.1.4 stills <folder>` — renders frames and **a labelled contact sheet**. Open and look at
52
52
  it before you go on: layout, readability, timing. Fix and repeat. `--at 0.5,1.2,3` for exact times.
53
53
  5. Hand it over: tell the user to open `<folder>/index.html` (Chrome or Edge), or `pack` it into one file, or
54
54
  `render` the MP4 yourself (`--fps 60 --motion-blur` for fast motion).
@@ -113,7 +113,7 @@ editor's own normalizer), so write only what you mean.
113
113
  Full references (generated from the editor's own docs; ignore the `/api/` routes they mention):
114
114
  `skill/references/` — video-design, scene-script, video-projects, video-text, video-text-kinetic, video-text-presets, video-shapes, video-keyframes,
115
115
  video-camera, video-3d, video-effects, video-transitions, video-particles, video-paths, video-backgrounds, video-grid.
116
- Machine-readable lists: `npx greenlight-motion@0.1.2 schema effects | transitions | easings | paths | expressions`.
116
+ Machine-readable lists: `npx greenlight-motion@0.1.4 schema effects | transitions | easings | paths | expressions`.
117
117
 
118
118
  ## Template
119
119
 
@@ -160,7 +160,7 @@ an absolute moment; `align` `sync` (default) / `start` / `end`; `offset` seconds
160
160
 
161
161
  The library is 77 hand-picked sounds in categories (whooshes and swooshes, transitions, clicks, pop-ups and
162
162
  notifications, data blips, typing and writing, foley, bubbles, impacts and bass drops, camera, gears, voice clips).
163
- `npx greenlight-motion@0.1.2 schema sounds` lists every one with its `category`, `use` (what it is for), `duration`
163
+ `npx greenlight-motion@0.1.4 schema sounds` lists every one with its `category`, `use` (what it is for), `duration`
164
164
  and `sync`. Pick by `category` and `use`, then by name.
165
165
 
166
166
  - **Where the files come from:** the GreenLight sound CDN. `build` downloads each sound a cue uses into
@@ -176,7 +176,7 @@ The page has **Notes**: the user marks what should change right on the frame (a
176
176
  and writes a note for each mark. Every note carries the moment (seconds and frame), the mark in composition pixels
177
177
  and the layers under it (item ids in project.json), so you change exactly that and nothing else.
178
178
 
179
- - **They review on this computer:** run `npx greenlight-motion@0.1.2 review <folder>` and give them the URL it prints
179
+ - **They review on this computer:** run `npx greenlight-motion@0.1.4 review <folder>` and give them the URL it prints
180
180
  (it keeps running; `--open` opens their browser, only when they ask). Their notes land in `<folder>/review/`: read
181
181
  `review/NOTES.md`, look at the `at-<t>s.png` pictures (the marks are numbered), make the changes (`apply`), `build`
182
182
  again and tell them to reload the page.
@@ -205,11 +205,11 @@ that fails (`plugin`); look at `stills` for the look. A package that carries its
205
205
 
206
206
  The same project opens in GreenLight Dash (the desktop editor this engine comes from) for full editing: the page's
207
207
  edit note offers **Open in GreenLight Dash** (it imports the folder as a new project on the open board; a page with
208
- changes saves a `.glvideo`). `npx greenlight-motion@0.1.2 pack <folder> --glvideo` writes that file yourself: ONE
208
+ changes saves a `.glvideo`). `npx greenlight-motion@0.1.4 pack <folder> --glvideo` writes that file yourself: ONE
209
209
  `.glvideo` (the project + its files) that opens in GreenLight Dash on a double-click, or dropped on its board. Hand it
210
210
  over when the user wants to keep editing in the app. A
211
211
  GreenLight Dash project comes the other way through the app's **Export for agents** — a ready folder like the one
212
- `init` makes, with the options the author ticked. `npx greenlight-motion@0.1.2 init <folder> --from <its project.json>`
212
+ `init` makes, with the options the author ticked. `npx greenlight-motion@0.1.4 init <folder> --from <its project.json>`
213
213
  starts from one too. Never tell the user they must install it: the page plays, changes options and renders on its own.
214
214
 
215
215
  ## Files
@@ -351,19 +351,28 @@ POST /api/video-presets/import?board_id={board_id} # multipart `file` = a pr
351
351
 
352
352
  ### GreenLight Motion pages (Export for agents)
353
353
 
354
- A project can leave the app as a **GreenLight Motion Engine page**: a folder with `index.html` (plays the project in
355
- Chrome/Edge from a double-click, nothing to install: preview, read-only layer timeline, an options panel, Render MP4),
356
- `project.json` (the editor `data` above + `name`, `formatVersion: 1` and `template` — the options), and `assets/`
357
- (`assets/media/<rel>` = the board's `/media/<rel>` files under their original refs, `assets/hdr/`, `assets/models/`).
358
- In the app: Video Editor ▸ project chip ▸ **Export for agents**. Over the API:
354
+ A project leaves the app through Video Editor ▸ project chip ▸ **Export for agents**, as ONE of:
355
+ - **a `.glvideo` file** (the window's default, `format: "glvideo"`): the project in one file, for a Claude chat (drop it
356
+ on the GreenLight Motion connector's video page) or another GreenLight Dash (double-click). Layout below.
357
+ - **a GreenLight Motion Engine page** (`format: "folder"`, the API's default): a folder with `index.html` (plays the
358
+ project in Chrome/Edge from a double-click, nothing to install: the studio — preview, layers, options, Notes,
359
+ Render MP4), `project.json` (the editor `data` above + `name`, `formatVersion: 1` and `template` — the options), and
360
+ `assets/` (`assets/media/<rel>` = the board's `/media/<rel>` files under their original refs, `assets/hdr/`,
361
+ `assets/models/`). For an agent on this computer that works on `project.json`.
362
+
363
+ Over the API:
359
364
 
360
365
  ```
361
366
  GET /api/moodboards/{board_id}/video-projects/{project_id}/light-report
362
367
  → { name, template | null, leftOut: [{ kind, reason, layers[] }], engine: bool, defaultDest }
363
368
  POST /api/moodboards/{board_id}/video-projects/{project_id}/export-light
364
369
  { "dest?": "/abs/parent/folder", "title?": "…", "template?": { "title", "fields": [ … ] },
365
- "modelFiles?": { "<preset id>": "<the URL the app serves its .glb at>" }, "pack?": false }
366
- → { folder, index, packed: { path, bytes } | null, files, bytes, missing, leftOut, fields }
370
+ "modelFiles?": { "<preset id>": "<the URL the app serves its .glb at>" }, "format?": "folder" | "glvideo",
371
+ "pack?": false, "smaller?": false, "progressId?": "<8–64 of A-Z a-z 0-9 ->" }
372
+ → folder: { folder, index, packed: { path, bytes } | null, files, bytes, missing, leftOut, fields, smaller }
373
+ → glvideo: { format: "glvideo", glvideo: "<dest>/<title>.glvideo", folder: <dest>, bytes, files, missing, leftOut, fields, smaller }
374
+ GET /api/video-projects/export-light/progress/{progressId}
375
+ → { phase: waiting | files | page | done, done, total, file, converting } (a .glvideo has no `page` phase)
367
376
  POST /api/moodboards/{board_id}/video-projects/import-light
368
377
  { "path": "/abs/folder | …/index.html | a one-file page.html | a .glvideo file", "activate?": true }
369
378
  → the new project (like POST video-projects) + { copied }
@@ -381,8 +390,10 @@ GET /api/moodboards/{board_id}/video-projects/{project_id}/glvideo?models=<JSON
381
390
  - `template.fields[]` = `{ key, label, type: text|color|image|number|select|toggle, targets: [{ itemId | clipId | (neither = project), path }] }`
382
391
  — e.g. `{ "key": "headline", "label": "Headline", "type": "text", "targets": [{ "itemId": "<item id>", "path": "textContent" }] }`,
383
392
  a shape colour `path: "shapeFillColor"`, the background `{ "path": "background.solidColor" }`. Omit `template` to keep
384
- the project's saved one; `pack: true` also writes one self-contained `.html` next to the folder (for a Claude
385
- artifact: keep it under 16 MB).
393
+ the project's saved one; `pack: true` (folder only) also writes one self-contained `.html` next to the folder (for a
394
+ Claude artifact: keep it under 16 MB). `smaller: true` puts WAV sounds in as MP3 and PNG pictures as WebP (transparency
395
+ kept) and points the exported project at them — the board keeps its originals; `smaller` in the answer is
396
+ `{ sounds, pictures, before, after }`. A name already taken gets a number: `<title> 2.glvideo`, `<title> 2/`.
386
397
  - The template is kept beside the project (`<board folder>/.motion/<project id>.template.json`), not in its `data`.
387
398
  - `import-light` copies every file into the board (`motion-<title>/`), except a `/media/` file this machine already
388
399
  has byte for byte; the template comes back too. It is what the page's **Open in GreenLight Dash** button does