@osmo.inc/cli 0.1.15 → 0.1.16
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/DEPLOY.md +30 -67
- package/README.md +11 -231
- package/SETUP.md +18 -48
- package/package.json +3 -4
- package/release.json +9 -10
- package/vendor/platform.json +1 -1
- package/RELEASE.md +0 -164
package/DEPLOY.md
CHANGED
|
@@ -1,64 +1,39 @@
|
|
|
1
|
-
# Share videos
|
|
1
|
+
# Share videos for review
|
|
2
2
|
|
|
3
3
|
[Back to the CLI overview](README.md)
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
The public release exposes video sharing. The entire `osmo studio` namespace
|
|
8
|
-
is disabled and hidden from help by default. The Studio workflow below is for
|
|
9
|
-
internal testing with `OSMO_STUDIO_ENABLED=1`; it will launch later.
|
|
10
|
-
|
|
11
|
-
- `osmo share --video FILE.mp4`: upload a rendered video made in **any tool**, including drafts and work in progress, for
|
|
12
|
-
comments and review version history. No editable source is uploaded. Works from
|
|
13
|
-
any folder, without `osmo studio init`, Git, or an Osmo project. Requires `osmo login`
|
|
14
|
-
and ffprobe (included with FFmpeg).
|
|
15
|
-
- `osmo studio deploy [scene.tsx]`: deploy a **full-featured editable Osmo project**,
|
|
16
|
-
including source files, assets, and tracked Git history, plus a rendered review
|
|
17
|
-
video and layer outline. Requires an initialized and published Osmo project
|
|
18
|
-
(`osmo studio init`, `osmo login`, `osmo studio publish`). Edit with local Studio or code;
|
|
19
|
-
shared cloud reviews are read-only. When Studio is enabled, AI agents should choose this command when
|
|
20
|
-
sharing an Osmo Studio project, to preserve editable source and project history.
|
|
5
|
+
Share a rendered video from any tool, including drafts and work in progress. Requires an Osmo login and ffprobe, with no project setup or Git repository.
|
|
21
6
|
|
|
22
7
|
```sh
|
|
23
8
|
osmo login
|
|
24
9
|
osmo share --video ./film.mp4 --name "Launch film"
|
|
25
|
-
# Use the project ID printed above to add a version to the same review:
|
|
26
10
|
osmo share --video ./film-v2.mp4 --project PROJECT_ID
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Without `--project`, each upload creates a new review. With `--project`, the upload adds a version to that review. The command does not initialize or write anything in the working folder.
|
|
14
|
+
|
|
15
|
+
Add `--json` for machine-readable output containing `project`, `render`, `link`, and `versionLink`. A failed upload reports the project ID for retrying; only completed uploads appear in review history.
|
|
16
|
+
|
|
17
|
+
## Supported videos
|
|
18
|
+
|
|
19
|
+
Upload MP4 with H.264 8-bit 4:2:0 video and optional AAC audio, up to 2 GiB. Files are uploaded as supplied; export a compatible MP4 from your video tool before sharing. Uploads stream from disk without buffering the full file.
|
|
20
|
+
|
|
21
|
+
Fractional frame rates are preserved. Variable-frame-rate videos retain playback duration and seconds-based comments; timeline frame positions use the average frame rate.
|
|
22
|
+
|
|
23
|
+
## Review links and comments
|
|
24
|
+
|
|
25
|
+
`link` is the stable review URL. Refresh it after a successful upload to see the newest completed version. An already open review stays on its version while you comment. Failed uploads leave the previous video available.
|
|
26
|
+
|
|
27
|
+
`versionLink` points to one specific video version. Comments stay attached to that version, and existing version links continue to work while sharing is enabled. Anyone with a review link can access the review.
|
|
28
|
+
|
|
29
|
+
```sh
|
|
27
30
|
osmo comments list --project PROJECT_ID --open --json
|
|
28
31
|
osmo comments reply COMMENT_ID "Updated in the latest version." --project PROJECT_ID
|
|
29
32
|
osmo comments resolve COMMENT_ID --project PROJECT_ID
|
|
33
|
+
osmo comments reopen COMMENT_ID --project PROJECT_ID
|
|
30
34
|
```
|
|
31
35
|
|
|
32
|
-
|
|
33
|
-
command does not initialize or write anything in the working folder. `--json`
|
|
34
|
-
returns `project`, `render`, `link`, and `versionLink`. A failed upload prints the
|
|
35
|
-
project ID for retrying; only completed uploads appear in review history.
|
|
36
|
-
|
|
37
|
-
Video import accepts MP4 with H.264 8-bit 4:2:0 video and optional AAC audio, up to
|
|
38
|
-
2 GB. Unsupported codecs are rejected before creating a cloud project; export a
|
|
39
|
-
compatible MP4 from your video tool first. Fractional frame rates are preserved;
|
|
40
|
-
variable-rate videos retain exact playback duration and seconds-based comments
|
|
41
|
-
(the timeline's frame positions use the average frame rate). Imported videos
|
|
42
|
-
support time ranges, canvas annotations, replies, and resolution, without an
|
|
43
|
-
editable layer outline. Uploads stream from disk without buffering the full file.
|
|
44
|
-
|
|
45
|
-
## Cloud review links
|
|
46
|
-
|
|
47
|
-
Both workflows upload a version and print one stable project
|
|
48
|
-
review URL (`/share/project/<project-id>`). Reopen or refresh it after a successful
|
|
49
|
-
deployment to see the newest completed version; failed uploads leave the previous
|
|
50
|
-
video available. An already open review stays on its version while you comment.
|
|
51
|
-
|
|
52
|
-
With `--json`, `link` is the stable project URL and `versionLink` is the permanent
|
|
53
|
-
URL for that particular render. Comments stay attached to their render. Existing
|
|
54
|
-
version links continue to work while sharing is enabled. The stable route requires the matching web/backend
|
|
55
|
-
update; source and revision access still require login, while review links retain
|
|
56
|
-
the existing anyone-with-the-link access.
|
|
57
|
-
|
|
58
|
-
Studio deployments include a public layer outline (names, hierarchy and timing),
|
|
59
|
-
without source properties or asset URLs. Cloud comments preserve the local
|
|
60
|
-
comment shape, including time ranges, canvas/element targets and replies. Older
|
|
61
|
-
deployments remain viewable without the layer outline.
|
|
36
|
+
Reviews support time ranges, canvas annotations, replies, and resolving comments.
|
|
62
37
|
|
|
63
38
|
## Disable review links
|
|
64
39
|
|
|
@@ -66,22 +41,10 @@ deployments remain viewable without the layer outline.
|
|
|
66
41
|
osmo unshare --project PROJECT_ID
|
|
67
42
|
```
|
|
68
43
|
|
|
69
|
-
Requires login and owner or editor access to the project. Works from any folder,
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
new
|
|
76
|
-
Previously obtained direct media URLs and downloaded copies are not revoked;
|
|
77
|
-
media currently uses public object storage, and already issued signed downloads
|
|
78
|
-
can remain valid until expiry.
|
|
79
|
-
|
|
80
|
-
A successful new `osmo share --video FILE.mp4 --project PROJECT_ID` restores
|
|
81
|
-
sharing for the project and all its existing versions. Studio projects can also
|
|
82
|
-
be shared again with a new `osmo studio deploy`. Uploads begun before revocation,
|
|
83
|
-
failed uploads, and retries of old completion requests do not restore sharing.
|
|
84
|
-
The backend update and its `0065_review_link_revocation` and
|
|
85
|
-
`0066_review_upload_generation` migrations must be deployed before using this
|
|
86
|
-
command. Existing uploads without a captured sharing generation may finish, but
|
|
87
|
-
cannot restore disabled links; start a new deployment to restore sharing.
|
|
44
|
+
Requires login and owner or editor access to the project. Works from any folder without local project files, Git, or FFmpeg. Add `--json` for `{ "status": "undeployed", "project": "PROJECT_ID" }`. Repeating the command is safe.
|
|
45
|
+
|
|
46
|
+
Videos, comments, and history remain stored. The main review link, all version links, public comment reads/writes, and new public download links stop working. Authenticated project access is retained.
|
|
47
|
+
|
|
48
|
+
Previously obtained direct media URLs and downloaded copies are not revoked; already issued signed downloads can remain valid until expiry.
|
|
49
|
+
|
|
50
|
+
A successful new `osmo share --video FILE.mp4 --project PROJECT_ID` restores the review links for the project and its existing versions. Uploads begun before links were disabled, failed uploads, and retries of old completion requests do not restore them. Start a new upload to restore sharing.
|
package/README.md
CHANGED
|
@@ -1,243 +1,23 @@
|
|
|
1
|
-
# Osmo CLI
|
|
1
|
+
# Osmo CLI
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
are unreleased and disabled by default.
|
|
5
|
-
This release targets **macOS on Apple Silicon with arm64 Node 22**. Cloud commands
|
|
6
|
-
use **https://studio.osmo.inc** by default.
|
|
7
|
-
For preview testing, explicitly set `OSMO_BASE_URL=https://preview.osmo.inc`.
|
|
8
|
-
Credentials are stored separately for each origin; changing the default does not
|
|
9
|
-
move preview credentials or repoint existing published projects.
|
|
3
|
+
Share videos. Collect feedback.
|
|
10
4
|
|
|
11
|
-
|
|
5
|
+
Upload a video from any tool and get a review link with timestamped comments and version history.
|
|
12
6
|
|
|
13
7
|
```sh
|
|
14
8
|
npm install -g @osmo.inc/cli
|
|
15
|
-
osmo login
|
|
9
|
+
osmo login
|
|
10
|
+
osmo share --video ./video.mp4
|
|
16
11
|
```
|
|
17
12
|
|
|
18
|
-
|
|
19
|
-
does not publish to npm.
|
|
20
|
-
|
|
21
|
-
**Prerequisites:** Node 22 and npm; FFmpeg with the `libx264` encoder and ffprobe
|
|
22
|
-
on PATH for rendering/video workflows. Project authoring also requires Git with
|
|
23
|
-
SHA-256 repository support (Git 2.29+). Rust, Cargo and this checkout are not
|
|
24
|
-
needed on end-user machines. FFmpeg is not bundled.
|
|
25
|
-
|
|
26
|
-
Share a rendered video from any tool, including drafts and work in progress, from any directory:
|
|
27
|
-
|
|
28
|
-
```sh
|
|
29
|
-
osmo share --video ./animation.mp4
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
This needs login and ffprobe, with no project, Git or `init`.
|
|
33
|
-
|
|
34
|
-
Disable a project's public review links with `osmo unshare --project PROJECT_ID`.
|
|
35
|
-
Videos, comments, and history are retained. A successful new deployment to the
|
|
36
|
-
same project restores sharing. See the [revocation details](DEPLOY.md#disable-review-links).
|
|
37
|
-
|
|
38
|
-
## Internal Studio preview
|
|
39
|
-
|
|
40
|
-
All `osmo studio …` commands are hidden from help and disabled by default,
|
|
41
|
-
including Studio comments. For internal testing, explicitly enable them in the
|
|
42
|
-
shell with `export OSMO_STUDIO_ENABLED=1`. Any other value leaves them disabled.
|
|
43
|
-
This is a local release switch, not an authorization or security boundary.
|
|
44
|
-
Project initialization is `osmo studio init`; the former top-level `osmo init`
|
|
45
|
-
is removed. Project publishing, push, pull, sync, clone, and history also live
|
|
46
|
-
under `osmo studio`; their former top-level commands are removed. Authentication,
|
|
47
|
-
resources, video sharing, and video comments remain at the top level.
|
|
48
|
-
|
|
49
|
-
With Studio enabled, the editable source, assets and Git history workflow is:
|
|
50
|
-
|
|
51
|
-
```sh
|
|
52
|
-
osmo studio init my-animation
|
|
53
|
-
cd my-animation
|
|
54
|
-
osmo studio check scene.tsx
|
|
55
|
-
osmo studio render scene.tsx --out exports/animation.mp4
|
|
56
|
-
osmo studio publish --name "My animation"
|
|
57
|
-
osmo studio deploy scene.tsx
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
See the [sharing and deployment guide](DEPLOY.md) and [setup prompt](SETUP.md).
|
|
61
|
-
Local authoring and rendering work without an Osmo account.
|
|
62
|
-
|
|
63
|
-
## Build and verify an archive
|
|
64
|
-
|
|
65
|
-
From this checkout on an Apple Silicon Mac (Rust, wasm-pack, the wasm32 target,
|
|
66
|
-
Node 22.18+, FFmpeg and Xcode command-line tools required):
|
|
13
|
+
Add a version, read feedback, or disable the link:
|
|
67
14
|
|
|
68
15
|
```sh
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
npm install -g ./dist/osmo-cli-0.1.15-darwin-arm64.tgz
|
|
16
|
+
osmo share --video ./video-v2.mp4 --project PROJECT_ID
|
|
17
|
+
osmo comments list --project PROJECT_ID --open --json
|
|
18
|
+
osmo unshare --project PROJECT_ID
|
|
73
19
|
```
|
|
74
20
|
|
|
75
|
-
|
|
76
|
-
bundle, including the editor; raw CLI TypeScript is not shipped. A checkout
|
|
77
|
-
requires Node 22.18+ for source tests; the installed CLI supports any Node 22.
|
|
78
|
-
The CLI renderer excludes the standalone desktop UI. Resources are fetched when
|
|
79
|
-
requested; the starter uses only text and built-in primitives. See the
|
|
80
|
-
[package size audit](RELEASE.md#package-size-audit) for included runtime files.
|
|
81
|
-
|
|
82
|
-
The internal archive is private and ad-hoc signed, for validation only. The build
|
|
83
|
-
rebuilds native and WASM renderers, clears Studio output, gathers dependency and
|
|
84
|
-
font notices, embeds Mediabunny's matching MPL source, and records artifact hashes
|
|
85
|
-
in `release.json`. The archive test installs outside this checkout and exercises
|
|
86
|
-
both deploy workflows against a local server. Nothing is published or uploaded
|
|
87
|
-
to Osmo cloud by these commands.
|
|
88
|
-
|
|
89
|
-
Public packaging needs no Apple credentials or new first-party license approval.
|
|
90
|
-
It preserves existing license metadata and uses ad-hoc signing by default;
|
|
91
|
-
certificate signing and notarization are optional. See [release instructions](RELEASE.md).
|
|
92
|
-
The source workspace remains `private: true`; only the complete `--npm` package
|
|
93
|
-
can be published as `@osmo.inc/cli` with public access and the `latest` tag.
|
|
94
|
-
|
|
95
|
-
`osmo studio init` installs the matching `@osmo/scene` archive from `.osmo/vendor`, without an
|
|
96
|
-
Osmo registry lookup. Keep that archive with the project. Existing scene/config
|
|
97
|
-
files and user instructions outside the managed AGENTS.md section are preserved.
|
|
98
|
-
Existing projects with scene API version 0.1.0 remain compatible. No scene API
|
|
99
|
-
changes are introduced by this packaging work.
|
|
100
|
-
|
|
101
|
-
## Copy-paste agent prompt
|
|
102
|
-
|
|
103
|
-
> Initialize an Osmo project in this folder with `osmo studio init`. Read `AGENTS.md`, create an animation using the supported primitives and Strict API, validate it with `osmo studio check scene.tsx`, and open it with `osmo studio open scene.tsx`. When I ask you to address feedback, read open Studio comments through the CLI. Validate completed fixes, reply only “Done.” and resolve them. Keep a comment open only for ambiguity, an incomplete fix, or a specific uncertainty needing my verification; leave one short sentence explaining what needs checking. Here is what I want to animate: …
|
|
104
|
-
|
|
105
|
-
## Account login
|
|
106
|
-
|
|
107
|
-
```sh
|
|
108
|
-
npx @osmo.inc/cli login --json
|
|
109
|
-
# Open the returned URL, confirm the code, then poll using its sessionId:
|
|
110
|
-
npx @osmo.inc/cli login status SESSION_ID --json
|
|
111
|
-
npx @osmo.inc/cli whoami --json
|
|
112
|
-
npx @osmo.inc/cli logout --json
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
`login` returns immediately so an agent can share the approval link. `login status`
|
|
116
|
-
returns pending/connected/denied/expired; respect `retryAfter` before polling again.
|
|
117
|
-
An unexpired attempt is reused. `--name "My laptop"` labels the connection.
|
|
118
|
-
`whoami` calls the backend and refreshes expired tokens automatically. `logout`
|
|
119
|
-
revokes that computer's connection; it preserves credentials when the server is
|
|
120
|
-
unreachable so revocation can be retried. Cancelling an unapproved pending login
|
|
121
|
-
removes it locally; its browser code expires on the server after ten minutes.
|
|
122
|
-
|
|
123
|
-
Preview is the default. Set `OSMO_BASE_URL=https://studio.osmo.inc` to explicitly
|
|
124
|
-
use production when its backend supports these commands; each origin has separate credentials.
|
|
125
|
-
Projects already connected to a cloud origin retain that origin. Account commands work outside a
|
|
126
|
-
Studio project. Secrets stay in `~/.osmo/auth` (directory 0700, files 0600), with
|
|
127
|
-
atomic writes and a cross-process lock for polling/refresh. They never appear in
|
|
128
|
-
CLI output. `OSMO_CONFIG_DIR` overrides the config root for isolated testing.
|
|
129
|
-
After a killed auth process, an `auth_busy` error names the lock directory to
|
|
130
|
-
remove once no auth command is running.
|
|
131
|
-
|
|
132
|
-
Account login also authorizes resource-package downloads. Generative tool execution is not
|
|
133
|
-
implemented. Studio's local preview and rendering still need no Osmo login.
|
|
134
|
-
|
|
135
|
-
## Resources
|
|
136
|
-
|
|
137
|
-
In editing mode, Studio shows project resources in the inspector when nothing is
|
|
138
|
-
selected. Drag a tile onto the timeline or canvas; compatible layer drops apply a
|
|
139
|
-
shader effect or a Group background. Drops use existing scene syntax and undo/redo.
|
|
140
|
-
|
|
141
|
-
```sh
|
|
142
|
-
osmo resources examples
|
|
143
|
-
osmo resources import ./image.png
|
|
144
|
-
osmo resources import ./video.mp4
|
|
145
|
-
osmo resources import ./shader.wgsl
|
|
146
|
-
osmo resources import ./model.glb
|
|
147
|
-
osmo resources local --json
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
These local commands require an initialized project, with no login. Files live
|
|
151
|
-
under `resources/<id>/` and appear automatically in the panel. Images, videos,
|
|
152
|
-
shaders, and GLB models are supported. Imported shaders are clip-only unless their
|
|
153
|
-
descriptor supplies an effect entry; the bundled tint example includes both.
|
|
154
|
-
|
|
155
|
-
```sh
|
|
156
|
-
osmo resources list --json
|
|
157
|
-
osmo resources list --category shader --json
|
|
158
|
-
osmo resources show silk --preset petrol --json
|
|
159
|
-
osmo resources add silk --preset petrol --json
|
|
160
|
-
osmo resources add liquid-glass --version 1.0.0 --preset frosted --json
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
List/show work without login or a project. They include public previews and links;
|
|
164
|
-
show reports compatibility with the running CLI. Add requires an initialized project
|
|
165
|
-
and Osmo login. It installs authenticated, checksum-verified files into
|
|
166
|
-
`resources/<id>/`: `shader.wgsl`, `shader.d.ts`, and `resource.json`. No lockfile or
|
|
167
|
-
scene edits. An identical installed package is a no-op; different, incomplete or
|
|
168
|
-
symlinked destinations are preserved and reported as conflicts. Presets share code;
|
|
169
|
-
`--preset` selects the uniforms/usage returned to the agent, not different files.
|
|
170
|
-
|
|
171
|
-
Use `Shader` with a relative `.wgsl` src and explicit uniforms. Uniform numbers and
|
|
172
|
-
vectors support motion/knob bindings; shader source stays static. Read the installed
|
|
173
|
-
types and the add command's usage instead of recreating a resource. CLI compatibility
|
|
174
|
-
is authoritative for this version; early manifests may still say Strict is unsupported.
|
|
175
|
-
The generated AGENTS.md requires resource discovery at the start of each animation
|
|
176
|
-
task. Re-run `osmo studio init` to update that managed section in an existing project.
|
|
177
|
-
|
|
178
|
-
`--json` errors include a stable error code; `login_required` includes the next login
|
|
179
|
-
command. Approve login in the browser, poll the returned session, and retry add.
|
|
180
|
-
The same OSMO_BASE_URL selects both the catalog and its separate credential store.
|
|
181
|
-
|
|
182
|
-
## Commands
|
|
183
|
-
|
|
184
|
-
```sh
|
|
185
|
-
osmo studio init [folder]
|
|
186
|
-
osmo studio open [scene.tsx] [--port NUMBER] [--no-open]
|
|
187
|
-
osmo studio check [scene.tsx] [--json]
|
|
188
|
-
osmo studio render [scene.tsx] --out animation.mp4 [--supersample 1|2]
|
|
189
|
-
osmo studio render [scene.tsx] --frame 90 --out frame.png [--supersample 1|2]
|
|
190
|
-
osmo studio comments list --open --json
|
|
191
|
-
osmo studio comments list --scene scene.tsx
|
|
192
|
-
osmo studio comments start COMMENT_ID [EMOJI]
|
|
193
|
-
osmo studio comments stop COMMENT_ID
|
|
194
|
-
osmo studio comments react COMMENT_ID [EMOJI|none]
|
|
195
|
-
osmo studio comments reply COMMENT_ID "Done."
|
|
196
|
-
osmo studio comments resolve COMMENT_ID
|
|
197
|
-
osmo studio comments reopen COMMENT_ID
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
A render holds every frame in memory and stops when the compiled scene passes
|
|
201
|
-
1 GB. For a long or dense scene, raise the limit in megabytes:
|
|
202
|
-
`OSMO_SNAPSHOT_LIMIT_MB=4096 osmo studio render scene.tsx --out film.mp4`.
|
|
203
|
-
|
|
204
|
-
Run project commands from the initialized folder (or a child folder). `open` prints a stable project URL such as `http://127.0.0.1:4310/my-animation-k7m2` and opens the browser. The first launch picks an available port starting at 4310 and saves it with a folder-derived ID and random access token in gitignored `.osmo/studio.json`. Later launches reuse them, including after a folder rename. `--port NUMBER` saves a different port (`--port 0` chooses an available one). A saved port occupied by another app produces an error; Studio never silently moves it. Reopening a running project reuses its server and switches to the requested scene. The clean page URL establishes an HttpOnly, SameSite cookie; authenticated API calls also require a custom header. The server binds only to 127.0.0.1 and rejects foreign Host/Origin headers. Existing tabs reconnect automatically after a restart. Ctrl+C stops its HTTP server, renderer and child processes. `render` defaults to 2× supersampling and preserves existing files. No login or backend is required.
|
|
205
|
-
|
|
206
|
-
The browser provides play/pause, frame steps, scrubbing, looped playback, audio mute, timestamp/range comments, replies, filters, resolution, and MP4 export/download. Canvas hover previews a selection while paused. Click selects the outer group, double-click enters it, and Cmd/Ctrl-click selects the deepest element. Escape selects the parent or clears selection; empty canvas clears it. Clicking during playback pauses on the displayed frame. Canvas selections reveal their timeline rows. Hit testing uses native projected bounds, not per-pixel alpha or exact clipping. The centred switch changes between Comment mode (a compact time scale, seek bar and comments sidebar) and Interactive mode (properties/keyframes and read-only inspector). The seek bar expands smoothly to reveal layers in Interactive mode. Selection, playhead and layer expansion persist between modes. Its read-only timeline shows collapsible scene nesting, active durations, animation intervals, motion/effect/knob counts and expandable keyframes. Click a row for source locations, properties and a canvas outline; click a key to seek. Selection follows native layout bounds on the displayed frame, including nested groups and camera projection. The outline is a browser overlay and never appears in exports. Audio/Camera and Model Surface content have no standalone canvas outline; Models use their placement box. Effects can paint outside layout bounds. Drag the divider to resize the timeline. Inspection follows the successful preview revision and never edits source. Saving source/assets reloads the native scene. Compilation/render errors retain the last good preview and outline. Browser export uses the frozen preview snapshot; edits during export do not affect that export. CLI render compiles the source on disk.
|
|
207
|
-
|
|
208
|
-
Single-frame PNG exports use zero-based frame numbers: `--frame 90` is 3 seconds at 30 fps. The frame must exist in the scene. PNGs preserve transparency and scene dimensions; supersampling improves edges without enlarging the output. Both render modes validate Strict syntax/types and refuse to overwrite existing files.
|
|
209
|
-
|
|
210
|
-
## Comments
|
|
211
|
-
|
|
212
|
-
Press **C** for Comment mode or **E** for Interactive mode. Mode changes take 180ms; hold Shift while clicking a mode or using its shortcut to inspect the 1.8-second transition.
|
|
213
|
-
|
|
214
|
-
In Comment mode, click the canvas for a point or drag a dashed rectangle around an area. Click the time scale for a timestamp or drag for a period. Open **Layers** to comment on a particular scene element without leaving Comment mode. Avatar pins on the canvas and time scale open the thread; hovering shows a preview. Clicking away discards empty drafts. With unsent text, the first outside click or Escape shakes the composer and keeps it open; repeating the same action discards it. Editing or clicking back inside resets that confirmation. Drafts do not survive a page reload. Drag a selected comment’s timeline handles to adjust its range, including after posting; an end handle can extend a point comment into a range. Click a sidebar comment card to seek to and highlight its timestamp or range. Saved threads support replies and resolution.
|
|
215
|
-
|
|
216
|
-
Use the avatar button in the comments sidebar to set your local name and photo. The comment cursor uses your photo when available, otherwise the default comment icon. Profile settings live in `.osmo/comment-profile.json`; new comments include a snapshot of their author's profile. Area coordinates are relative to the preview dimensions, and element targets reference the preview's outline IDs. Canvas annotations appear at their timestamp or throughout their selected period; earlier-revision comments stay available on the timeline without projecting old bounds onto the new preview.
|
|
217
|
-
|
|
218
|
-
`.osmo/comments.json` is persistent, versioned project data. UI and CLI share cross-process locking and atomic writes. Every comment contains a scene-relative filename, seconds (and optional endTime), an ID, preview content revision, status, text, replies and timestamps. Earlier revisions are flagged in the UI; timestamps are not automatically remapped after retiming. The agent never needs a running viewer to read/reply/resolve. An idle agent is not automatically notified: ask it to apply your comments through the CLI. Reopen is available to undo a resolution.
|
|
219
|
-
|
|
220
|
-
## Boundaries
|
|
221
|
-
|
|
222
|
-
- Strict checks run before preview and export; this remains an authoring contract, not a sandbox. Only open trusted local source/assets.
|
|
223
|
-
- v1 streams PNG frames on demand from one persistent native renderer, with a bounded 32 MB server frame cache. Preview drops frames to keep wall-clock timing under load; export renders every frame. Large scenes may not sustain their authored FPS. Incremental TSX compilation, adaptive preview resolution and video compression are future work.
|
|
224
|
-
- Preview currently renders at 1×; export defaults to 2×. Audio uses the native frozen mix. No hosted sharing, multiplayer identities, spatial annotations, editable knob inspector, MCP server, or automatic agent wake-up yet.
|
|
225
|
-
- The old desktop viewer remains available. The Studio worker is an additional native entry point.
|
|
226
|
-
|
|
227
|
-
## Development
|
|
228
|
-
|
|
229
|
-
```sh
|
|
230
|
-
cargo build --locked --manifest-path apps/native/Cargo.toml
|
|
231
|
-
node packages/cli/bin/osmo.mjs studio init /tmp/my-osmo-project
|
|
232
|
-
cd /tmp/my-osmo-project
|
|
233
|
-
node /path/to/ai-motion-designer-web/packages/cli/bin/osmo.mjs studio open scene.tsx --no-open
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
Storage tests: `npm -w @osmo/cli test`. Native integration tests:
|
|
237
|
-
`npm -w @osmo/cli run test:integration`. Integration tests start the real native renderer on loopback and use temporary projects. Build the native executable first. Browser UI components and adapted visual tokens live in `packages/studio`.
|
|
238
|
-
|
|
239
|
-
## Deployment and review
|
|
21
|
+
Requires **Apple Silicon macOS, Node 22, and ffprobe**. Accepts H.264 MP4 with optional AAC audio, up to 2 GiB. No project setup or Git required.
|
|
240
22
|
|
|
241
|
-
|
|
242
|
-
`osmo share --video` and full editable projects with `osmo studio deploy`,
|
|
243
|
-
including version updates, comments, and review links.
|
|
23
|
+
[Sharing guide](DEPLOY.md) · [AI agent setup](SETUP.md)
|
package/SETUP.md
CHANGED
|
@@ -1,60 +1,30 @@
|
|
|
1
|
-
# Osmo
|
|
1
|
+
# Osmo CLI setup
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
**https://studio.osmo.inc**, including login, uploads, and resource downloads.
|
|
5
|
-
Existing project cloud pointers are preserved. Credentials are isolated by origin.
|
|
6
|
-
The install command uses the default `latest` release.
|
|
3
|
+
Requires an Apple Silicon Mac, arm64 Node 22, and ffprobe (included with FFmpeg). The default service is **https://studio.osmo.inc**.
|
|
7
4
|
|
|
8
|
-
##
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```sh
|
|
8
|
+
npm install -g @osmo.inc/cli
|
|
9
|
+
osmo login
|
|
10
|
+
osmo share --video ./video.mp4
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Setup prompt for an AI agent
|
|
9
14
|
|
|
10
15
|
```text
|
|
11
16
|
Install @osmo.inc/cli from npm. Check for arm64 Node 22 and ffprobe.
|
|
12
17
|
Run osmo login --json and show me the approval link and code. After I approve,
|
|
13
18
|
poll login status with the returned sessionId, respecting retryAfter.
|
|
14
|
-
Run osmo whoami --json, then osmo share --video /path/to/video.mp4.
|
|
15
|
-
No
|
|
19
|
+
Run osmo whoami --json, then osmo share --video /path/to/video.mp4 --json.
|
|
20
|
+
No project setup or Git repository is needed. Return the review link and project ID.
|
|
16
21
|
Never read or print stored credentials.
|
|
17
22
|
```
|
|
18
23
|
|
|
19
|
-
Use H.264 MP4, 8-bit
|
|
20
|
-
For later versions use `osmo share --video FILE.mp4 --project PROJECT_ID`.
|
|
21
|
-
Disable review links with `osmo unshare --project PROJECT_ID`, preserving the data.
|
|
22
|
-
Use `osmo comments list --project PROJECT_ID --open --json` to read feedback.
|
|
23
|
-
|
|
24
|
-
## Internal Studio preview (not part of the public launch)
|
|
24
|
+
Use H.264 MP4, 8-bit 4:2:0 video, optionally with AAC audio, up to 2 GiB. Files are uploaded as supplied.
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
comments
|
|
28
|
-
|
|
29
|
-
```text
|
|
30
|
-
For internal testing only, set OSMO_STUDIO_ENABLED=1 in the command environment.
|
|
31
|
-
Set up Osmo Studio with the internal CLI archive.
|
|
32
|
-
Check for an Apple Silicon Mac, arm64 Node 22, npm, Git 2.29+ with SHA-256
|
|
33
|
-
support, FFmpeg with libx264, and ffprobe. Report missing prerequisites.
|
|
34
|
-
Run osmo studio init my-animation in a new folder, preserving files.
|
|
35
|
-
Read the generated AGENTS.md and the @osmo/scene declarations.
|
|
36
|
-
Run studio check scene.tsx, then studio render scene.tsx --out exports/check.mp4.
|
|
37
|
-
Use another output filename if that file already exists.
|
|
38
|
-
Open studio open scene.tsx and share the local preview URL.
|
|
39
|
-
Use the osmo prefix for all commands and preserve the Studio flag in their environment.
|
|
40
|
-
Wait for my animation brief after verifying setup.
|
|
41
|
-
When I ask to share the project, use osmo login, osmo studio publish, and osmo studio deploy.
|
|
42
|
-
That workflow includes editable source, assets and tracked Git history.
|
|
43
|
-
```
|
|
44
|
-
|
|
45
|
-
Local rendering needs no account. Cloud sharing requires `osmo login`.
|
|
46
|
-
The cloud review page is read-only; editing happens locally in Studio or code.
|
|
47
|
-
See [DEPLOY.md](DEPLOY.md) for video sharing and Studio project deployment.
|
|
48
|
-
|
|
49
|
-
## Test an unpublished archive
|
|
50
|
-
|
|
51
|
-
```sh
|
|
52
|
-
npm install -g /path/to/osmo-cli-0.1.15-darwin-arm64.tgz
|
|
53
|
-
osmo --version
|
|
54
|
-
export OSMO_STUDIO_ENABLED=1
|
|
55
|
-
osmo studio init my-animation
|
|
56
|
-
```
|
|
26
|
+
For later versions, use `osmo share --video FILE.mp4 --project PROJECT_ID`.
|
|
27
|
+
Read feedback with `osmo comments list --project PROJECT_ID --open --json`.
|
|
28
|
+
Disable review links with `osmo unshare --project PROJECT_ID`, preserving the data.
|
|
57
29
|
|
|
58
|
-
|
|
59
|
-
marked private to prevent accidental npm publication. It includes the renderer, Studio,
|
|
60
|
-
scene library and compiler; Rust and this repository are not needed to use it.
|
|
30
|
+
See the [sharing guide](DEPLOY.md) for version history, comments, and link access.
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@osmo.inc/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.16",
|
|
4
4
|
"private": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
7
7
|
"tag": "latest",
|
|
8
8
|
"registry": "https://registry.npmjs.org/"
|
|
9
9
|
},
|
|
10
|
-
"description": "
|
|
10
|
+
"description": "Share videos. Collect feedback.",
|
|
11
11
|
"type": "module",
|
|
12
12
|
"bin": {
|
|
13
13
|
"osmo": "bin/osmo.mjs"
|
|
@@ -26,8 +26,7 @@
|
|
|
26
26
|
"LICENSE",
|
|
27
27
|
"THIRD_PARTY_NOTICES.md",
|
|
28
28
|
"third-party",
|
|
29
|
-
"release.json"
|
|
30
|
-
"RELEASE.md"
|
|
29
|
+
"release.json"
|
|
31
30
|
],
|
|
32
31
|
"engines": {
|
|
33
32
|
"node": ">=22 <23"
|
package/release.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "0.1.
|
|
2
|
+
"version": "0.1.16",
|
|
3
3
|
"platform": "darwin-arm64",
|
|
4
4
|
"channel": "latest",
|
|
5
5
|
"defaultCloudOrigin": "https://studio.osmo.inc",
|
|
6
|
-
"sourceCommit": "
|
|
6
|
+
"sourceCommit": "2a7c1a5e37e17f0508f123b86af67e584d5fd0a6",
|
|
7
7
|
"sourceDirty": false,
|
|
8
8
|
"signing": "ad-hoc",
|
|
9
9
|
"licenseFileIncluded": false,
|
|
@@ -16,8 +16,8 @@
|
|
|
16
16
|
}
|
|
17
17
|
},
|
|
18
18
|
"contents": {
|
|
19
|
-
"totalBytes":
|
|
20
|
-
"fileCount":
|
|
19
|
+
"totalBytes": 59037117,
|
|
20
|
+
"fileCount": 947,
|
|
21
21
|
"groups": {
|
|
22
22
|
"vendor": 16948891,
|
|
23
23
|
"studio": 15935597,
|
|
@@ -29,12 +29,11 @@
|
|
|
29
29
|
"node_modules/esbuild": 143795,
|
|
30
30
|
"runtime": 137478,
|
|
31
31
|
"node_modules/fflate": 96377,
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"DEPLOY.md": 4829,
|
|
35
|
-
"SETUP.md": 2811,
|
|
32
|
+
"DEPLOY.md": 2902,
|
|
33
|
+
"SETUP.md": 1138,
|
|
36
34
|
"THIRD_PARTY_NOTICES.md": 1088,
|
|
37
|
-
"package.json":
|
|
35
|
+
"package.json": 889,
|
|
36
|
+
"README.md": 636,
|
|
38
37
|
"bin": 544
|
|
39
38
|
},
|
|
40
39
|
"largestFiles": [
|
|
@@ -129,7 +128,7 @@
|
|
|
129
128
|
"third-party/inventory.json": "6ff4e90c6583a67ca8bfe95b3f4399cfcdc080d39585dce1314a8dd91ee6fecb"
|
|
130
129
|
},
|
|
131
130
|
"lockfiles": {
|
|
132
|
-
"package-lock.json": "
|
|
131
|
+
"package-lock.json": "d355ffdb350a8fa57d7f4b06f28ef986ec0bd1ddc082094a4367f370ed3893d4",
|
|
133
132
|
"apps/native/Cargo.lock": "cf31d67cf167c5f32438abfeb42159eb50da61d36e4e482bae50ed3d71241373",
|
|
134
133
|
"packages/render-engine/Cargo.lock": "a1a68051e1eea30ef0fa46bf17cd0685bb2c6a327defed0405e0d63dd61017a7"
|
|
135
134
|
}
|
package/vendor/platform.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"os":"darwin","arch":"arm64","version":"0.1.
|
|
1
|
+
{"os":"darwin","arch":"arm64","version":"0.1.16"}
|
package/RELEASE.md
DELETED
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
# Public release
|
|
2
|
-
|
|
3
|
-
Release branch: `feat/cli-public-beta-typescript`, based on preview after TypeScript migration
|
|
4
|
-
PR #1045. The previous implementation remains on `feat/cli-public-beta`. End-user cloud default:
|
|
5
|
-
`https://studio.osmo.inc`. Preview testing requires an explicit
|
|
6
|
-
`OSMO_BASE_URL=https://preview.osmo.inc` override. Existing project origins and
|
|
7
|
-
per-origin credentials are preserved; preview logins are not reused for production.
|
|
8
|
-
Initial supported distribution: macOS Apple Silicon, arm64 Node 22. Other
|
|
9
|
-
platforms must have their own build and clean-machine validation before support
|
|
10
|
-
is declared. The current host's native deployment target is recorded by the
|
|
11
|
-
binary; older macOS versions have not been certified by this change.
|
|
12
|
-
|
|
13
|
-
## Studio release switch
|
|
14
|
-
|
|
15
|
-
`OSMO_STUDIO_ENABLED=1` enables the unreleased `osmo studio` namespace for internal
|
|
16
|
-
testing, including `osmo studio init [folder]`. Initialization and its generated
|
|
17
|
-
AGENTS.md guide belong to Studio; the former top-level `osmo init` is removed.
|
|
18
|
-
Studio defaults off in both checkout and installed builds, independently of the
|
|
19
|
-
cloud origin. Other values do not enable it. Disabled commands return
|
|
20
|
-
`feature_disabled` with `--json` before project lookup, rendering, or cloud writes;
|
|
21
|
-
help and video-share usage omit Studio commands. This local switch does not
|
|
22
|
-
provide account-based access control.
|
|
23
|
-
|
|
24
|
-
Project commands (`publish`, `push`, `pull`, `sync`, `clone`, and `history`) also
|
|
25
|
-
live under `osmo studio` and require the same opt-in; their top-level forms are
|
|
26
|
-
removed. Top-level authentication, resources, video sharing, and video comments
|
|
27
|
-
are unchanged. The archive still contains
|
|
28
|
-
the full runtime for internal opt-in; this flag alone does not shrink the payload.
|
|
29
|
-
The release manifest records the default and environment variable. Installed
|
|
30
|
-
smoke tests cover the disabled public surface and explicitly opt in for Studio
|
|
31
|
-
rendering/deploy tests. Video deployment tests run with Studio disabled.
|
|
32
|
-
|
|
33
|
-
## Build and package
|
|
34
|
-
|
|
35
|
-
1. Use a clean checkout, `npm ci`, arm64 Node 22.18+, Rust/Cargo, wasm-pack,
|
|
36
|
-
the wasm32-unknown-unknown Rust target, Xcode command-line tools, Git, and FFmpeg.
|
|
37
|
-
The package builds both renderer targets from source, then bundles Studio.
|
|
38
|
-
It also rebuilds the TypeScript CLI into `dist/osmo.js`; only that bundle and
|
|
39
|
-
its starter/resource templates are shipped, not raw CLI or editor source.
|
|
40
|
-
Compilation defaults to two Cargo jobs to limit memory usage.
|
|
41
|
-
2. Run unit tests, build the package and validate the installed archive:
|
|
42
|
-
|
|
43
|
-
```sh
|
|
44
|
-
npm -w @osmo/cli test
|
|
45
|
-
npm -w @osmo/studio test
|
|
46
|
-
npm -w @osmo/cli run test:package
|
|
47
|
-
npm -w @osmo/cli run package:npm
|
|
48
|
-
node packages/cli/tools/smoke-package.mjs dist/osmo.inc-cli-0.1.15-darwin-arm64.tgz
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
`package:npm` builds a publishable archive without requiring a first-party
|
|
52
|
-
LICENSE file or Apple credentials. Existing first-party license metadata and an
|
|
53
|
-
optional LICENSE file are preserved; the build does not choose new license terms.
|
|
54
|
-
`package:internal` performs the same builds and checks but sets `private: true`
|
|
55
|
-
for a local test archive. Neither command publishes to npm.
|
|
56
|
-
|
|
57
|
-
### Optional Apple signing
|
|
58
|
-
|
|
59
|
-
Both archive types use an ad-hoc signature by default, which needs no Apple
|
|
60
|
-
account or certificate. Set `OSMO_SIGNING_IDENTITY` to opt into certificate
|
|
61
|
-
signing. Also set `OSMO_NOTARY_PROFILE` to opt into notarization using a configured
|
|
62
|
-
`notarytool` keychain profile; that option requires a Developer ID Application
|
|
63
|
-
identity. If explicitly requested signing/notarization fails, packaging fails
|
|
64
|
-
instead of silently downgrading. `release.json.signing` records `ad-hoc`,
|
|
65
|
-
`signed`, or `developer-id-notarized`. Standalone Mach-O binaries cannot have
|
|
66
|
-
notarization tickets stapled. Do not commit credentials.
|
|
67
|
-
|
|
68
|
-
## Notices
|
|
69
|
-
|
|
70
|
-
`third-party/inventory.json` enumerates the actual Studio bundle inputs, installed
|
|
71
|
-
CLI dependencies and target-specific Cargo dependency graphs. Full upstream
|
|
72
|
-
notices, Inter OFL, and matching Mediabunny MPL source are included. The CLI
|
|
73
|
-
renderer excludes desktop UI dependencies and their unused fonts. Cargo entries conservatively include build-time dependencies.
|
|
74
|
-
Missing third-party license text fails packaging. For crates omitting notices from their
|
|
75
|
-
published archive, `licenses/rust-sources.json` pins upstream notice files by
|
|
76
|
-
version, source commit and SHA-256. Dependency updates require reviewing these
|
|
77
|
-
records. The upstream declaration and standard MIT text are retained for crates
|
|
78
|
-
that declare MIT but omit its full text; see `licenses/README.md`.
|
|
79
|
-
|
|
80
|
-
`release.json` records the source commit, dirty-tree state, lockfile hashes,
|
|
81
|
-
platform, cloud default, signing state, renderer/Studio hashes, and payload sizes
|
|
82
|
-
by directory with the largest files. These are
|
|
83
|
-
local build records, not npm or SLSA provenance attestations. Review the archive
|
|
84
|
-
contents before publishing. No Passenger fonts should be present.
|
|
85
|
-
|
|
86
|
-
## Before opening access
|
|
87
|
-
|
|
88
|
-
- Validate the archive on a second Apple Silicon Mac, including launch behavior,
|
|
89
|
-
install, login to studio.osmo.inc, font rendering, MP4 export and both deploy workflows.
|
|
90
|
-
- Confirm the intended production account access policy, storage limits, upload rate
|
|
91
|
-
limits and operational budget. Those backend policies are not added by this
|
|
92
|
-
packaging change. Existing per-file limits are not per-account quotas.
|
|
93
|
-
- Use your company npm publishing credentials for `@osmo.inc/cli`. Publish stable versions under npm's
|
|
94
|
-
`latest` tag.
|
|
95
|
-
- Publish separately when ready:
|
|
96
|
-
|
|
97
|
-
```sh
|
|
98
|
-
npm publish ./dist/osmo.inc-cli-0.1.15-darwin-arm64.tgz --access public --tag latest
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
The private GitHub repository is not made public by this workflow. No automated
|
|
102
|
-
public publishing workflow is enabled here. Project initialization now uses `osmo studio init`; the scene API is unchanged.
|
|
103
|
-
|
|
104
|
-
## Local validation of 0.1.15-beta.1
|
|
105
|
-
|
|
106
|
-
Validated on macOS 27.0 / Apple Silicon, Node 22.23.1. The native binary declares
|
|
107
|
-
macOS 11.0 as its deployment target; this does not certify older macOS versions.
|
|
108
|
-
All scene, editor, Studio and CLI typechecks passed after the TypeScript port.
|
|
109
|
-
Scene tests: 233 passed; editor: 129; Studio: 68; CLI: 76, with the native deploy
|
|
110
|
-
case run separately. Packaging regressions: 3 passed, including stale-font
|
|
111
|
-
removal, missing/tampered notice rejection, and execution of the trimmed compiler
|
|
112
|
-
and ZIP dependency. The actual 19.5 MiB archive installed
|
|
113
|
-
offline outside the checkout, rejected unavailable Git without creating a partial
|
|
114
|
-
project, initialized and typechecked the starter, and rendered visible Inter text
|
|
115
|
-
to MP4. The archive contains `dist/osmo.js`, not raw CLI TypeScript, and its
|
|
116
|
-
bundled auth flow independently verifies the studio.osmo.inc default. All 5 deploy tests passed against local cloud fixtures using the installed
|
|
117
|
-
CLI and native release binary, including both deploy modes and comments. Two
|
|
118
|
-
additional installed-package tests passed: generated SVG/WGSL/GLB fixtures and
|
|
119
|
-
audible AAC export, plus Studio static assets and a native worker frame. The
|
|
120
|
-
normal desktop build still passes Cargo check with its default features.
|
|
121
|
-
The public npm archive also builds without a first-party LICENSE file or Apple
|
|
122
|
-
credentials and passes all nine installed-package checks. A separate standalone
|
|
123
|
-
video deployment to preview succeeded with Studio disabled. No npm publication,
|
|
124
|
-
Developer ID signing, or notarization was performed.
|
|
125
|
-
|
|
126
|
-
## Package size audit
|
|
127
|
-
|
|
128
|
-
Measured from the macOS arm64 internal npm tarball, with MiB = 1,048,576 bytes:
|
|
129
|
-
|
|
130
|
-
| Payload | Before | After |
|
|
131
|
-
| --- | ---: | ---: |
|
|
132
|
-
| Compressed download | 24.89 MiB | 19.48 MiB |
|
|
133
|
-
| Unpacked files | 77.52 MiB | 56.32 MiB |
|
|
134
|
-
| Native renderer | 22.25 MiB | 16.13 MiB |
|
|
135
|
-
| TypeScript dependency | 22.53 MiB | 9.45 MiB |
|
|
136
|
-
|
|
137
|
-
The archive excludes the standalone desktop window, file picker, playback audio
|
|
138
|
-
output library and desktop UI fonts. Audio mixing/export and Studio preview remain
|
|
139
|
-
supported. Checkout desktop builds retain their default features.
|
|
140
|
-
|
|
141
|
-
The staged compiler retains the compiler API and standard library declarations;
|
|
142
|
-
CLI executables, language server, translated diagnostics and development files are
|
|
143
|
-
excluded. Its JavaScript receives whitespace-only minification, with notices and
|
|
144
|
-
a modification notice retained. Unused fflate builds, duplicate raw Studio fonts,
|
|
145
|
-
vendor documentation, sample scripts and install metadata are also excluded.
|
|
146
|
-
`init` now creates a small text animation with no external assets or shaders.
|
|
147
|
-
|
|
148
|
-
Built-in WGSL implements rendering and effects; it stays embedded in the native
|
|
149
|
-
and WASM renderers. Project media, resource catalog downloads, repository examples,
|
|
150
|
-
shader demos and test fixtures are not bundled, except the existing 0.36 MiB
|
|
151
|
-
`resources examples` templates. Removing that public command requires separate
|
|
152
|
-
API approval. Resource listing/download/import continues to fetch content on demand.
|
|
153
|
-
|
|
154
|
-
The remaining major components are native rendering (16.13 MiB), browser WASM
|
|
155
|
-
(10.43 MiB), esbuild (9.90 MiB), the Node compiler and its standard libraries
|
|
156
|
-
(9.45 MiB), and Studio JavaScript (4.46 MiB). Studio includes its own browser
|
|
157
|
-
compiler for local source editing. Required notices and matching MPL source are
|
|
158
|
-
retained. A much smaller base install would require optional/on-demand Studio and
|
|
159
|
-
renderer downloads; that architectural change is not part of this cleanup.
|
|
160
|
-
|
|
161
|
-
Package verification rejects desktop dependencies, redundant assets and removed
|
|
162
|
-
compiler tools, and limits the macOS arm64 unpacked payload to 60 MiB. Review
|
|
163
|
-
size changes deliberately before raising that budget. `release.json.contents`
|
|
164
|
-
measures staged payload files before adding the release manifest itself.
|