@osmo.inc/cli-linux-arm64 0.1.23 → 0.1.25

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.
Files changed (72) hide show
  1. package/dist/studio.js +5058 -930
  2. package/package.json +1 -1
  3. package/release.json +32 -32
  4. package/runtime/apps/native/tools/compile.mjs +22 -4
  5. package/runtime/packages/render-protocol/src/film-catalog.json +2543 -0
  6. package/runtime/packages/render-protocol/src/film-resources.mjs +91 -0
  7. package/runtime/packages/render-protocol/src/film-store.node.mjs +220 -0
  8. package/runtime/packages/scene/scripts/sync-film.mjs +8 -0
  9. package/runtime/packages/scene/scripts/validate-strict.mjs +14 -4
  10. package/runtime/packages/scene/scripts/verify-export-resolution.mjs +67 -0
  11. package/runtime/packages/scene/scripts/verify-film.mjs +66 -0
  12. package/runtime/packages/scene/src/effect-schemas.d.mts +246 -0
  13. package/runtime/packages/scene/src/effect-schemas.mjs +136 -0
  14. package/runtime/packages/scene/src/effects.ts +23 -6
  15. package/runtime/packages/scene/src/elements.ts +15 -3
  16. package/runtime/packages/scene/src/evaluate.ts +88 -12
  17. package/runtime/packages/scene/src/film-catalog.generated.ts +3 -0
  18. package/runtime/packages/scene/src/film.ts +39 -0
  19. package/runtime/packages/scene/src/index.ts +6 -2
  20. package/runtime/packages/scene/src/knob-schema.ts +5 -2
  21. package/runtime/packages/scene/src/metadata.d.mts +2 -1
  22. package/runtime/packages/scene/src/metadata.mjs +4 -4
  23. package/runtime/packages/scene/src/motion-blur.ts +30 -0
  24. package/src/starter/scene.tsx +1 -1
  25. package/studio/src/app.css +1 -1
  26. package/studio/src/app.js +197 -179
  27. package/studio/src/engine_bg.wasm +0 -0
  28. package/studio/src/preview-worker.js +33 -0
  29. package/studio/src/stretch-worklet-Z4ADHTIR.mjs +1 -0
  30. package/third-party/braw/BlackmagicRawAPI.h +1137 -0
  31. package/third-party/braw/README.md +7 -0
  32. package/third-party/cargo/block-buffer@0.10.4/Cargo.toml +32 -0
  33. package/third-party/cargo/block-buffer@0.10.4/LICENSE-APACHE +201 -0
  34. package/third-party/cargo/block-buffer@0.10.4/LICENSE-MIT +25 -0
  35. package/third-party/cargo/cc@1.4.5/Cargo.toml +89 -0
  36. package/third-party/cargo/cc@1.4.5/LICENSE-APACHE +201 -0
  37. package/third-party/cargo/cc@1.4.5/LICENSE-MIT +25 -0
  38. package/third-party/cargo/cpufeatures@0.2.17/Cargo.toml +71 -0
  39. package/third-party/cargo/cpufeatures@0.2.17/LICENSE-APACHE +201 -0
  40. package/third-party/cargo/cpufeatures@0.2.17/LICENSE-MIT +25 -0
  41. package/third-party/cargo/crypto-common@0.1.7/Cargo.toml +62 -0
  42. package/third-party/cargo/crypto-common@0.1.7/LICENSE-APACHE +201 -0
  43. package/third-party/cargo/crypto-common@0.1.7/LICENSE-MIT +25 -0
  44. package/third-party/cargo/digest@0.10.7/Cargo.toml +70 -0
  45. package/third-party/cargo/digest@0.10.7/LICENSE-APACHE +201 -0
  46. package/third-party/cargo/digest@0.10.7/LICENSE-MIT +25 -0
  47. package/third-party/cargo/find-msvc-tools@0.1.12/Cargo.toml +49 -0
  48. package/third-party/cargo/find-msvc-tools@0.1.12/LICENSE-APACHE +201 -0
  49. package/third-party/cargo/find-msvc-tools@0.1.12/LICENSE-MIT +25 -0
  50. package/third-party/cargo/generic-array@0.14.7/Cargo.toml +75 -0
  51. package/third-party/cargo/generic-array@0.14.7/LICENSE +21 -0
  52. package/third-party/cargo/sha2@0.10.9/Cargo.toml +90 -0
  53. package/third-party/cargo/sha2@0.10.9/LICENSE-APACHE +201 -0
  54. package/third-party/cargo/sha2@0.10.9/LICENSE-MIT +27 -0
  55. package/third-party/cargo/shlex@2.0.1/Cargo.toml +51 -0
  56. package/third-party/cargo/shlex@2.0.1/LICENSE-APACHE +13 -0
  57. package/third-party/cargo/shlex@2.0.1/LICENSE-MIT +21 -0
  58. package/third-party/cargo/typenum@1.20.1/Cargo.toml +75 -0
  59. package/third-party/cargo/typenum@1.20.1/LICENSE +1 -0
  60. package/third-party/cargo/typenum@1.20.1/LICENSE-APACHE +201 -0
  61. package/third-party/cargo/typenum@1.20.1/LICENSE-MIT +21 -0
  62. package/third-party/film/camera-COLOUR-LICENSE +11 -0
  63. package/third-party/film/camera-CONFIG-LICENSE +26 -0
  64. package/third-party/film/camera-LICENSE +26 -0
  65. package/third-party/film/camera-metadata.json +344 -0
  66. package/third-party/film/provenance.json +7 -0
  67. package/third-party/inventory.json +162 -0
  68. package/third-party/npm/signalsmith-stretch@1.3.2/package.json +26 -0
  69. package/third-party/npm/signalsmith-stretch@1.3.2/signalsmith-stretch-1.3.2-LICENSE.txt +21 -0
  70. package/vendor/osmo-lite +0 -0
  71. package/vendor/osmo-scene-0.1.0.tgz +0 -0
  72. package/vendor/platform.json +1 -1
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.23",
2
+ "version": "0.1.25",
3
3
  "type": "module",
4
4
  "files": [
5
5
  "dist",
package/release.json CHANGED
@@ -1,37 +1,37 @@
1
1
  {
2
- "version": "0.1.23",
2
+ "version": "0.1.25",
3
3
  "package": "@osmo.inc/cli-linux-arm64",
4
4
  "platform": "linux-arm64",
5
5
  "channel": "latest",
6
- "sourceCommit": "e865c900aafb496ce6520ab1308f911087337ccf",
6
+ "sourceCommit": "dc0ada76b33049e18ccfe3558090cd63eb6eada8",
7
7
  "sourceDirty": false,
8
8
  "signing": "unsigned",
9
9
  "licenseFileIncluded": false,
10
- "dependencyCount": 298,
10
+ "dependencyCount": 309,
11
11
  "nativeDefaultFeatures": false,
12
12
  "contents": {
13
- "totalBytes": 62403892,
14
- "fileCount": 1929,
13
+ "totalBytes": 63987569,
14
+ "fileCount": 1981,
15
15
  "groups": {
16
- "studio": 19627240,
17
- "vendor": 18626061,
16
+ "studio": 20310099,
17
+ "vendor": 18971881,
18
18
  "node_modules/typescript": 9913238,
19
19
  "node_modules/zod": 6140311,
20
- "third-party": 4941579,
21
- "src": 2622428,
22
- "dist": 373939,
23
- "runtime": 157161,
20
+ "third-party": 5146683,
21
+ "src": 2622446,
22
+ "dist": 526994,
23
+ "runtime": 353982,
24
24
  "THIRD_PARTY_NOTICES.md": 1090,
25
25
  "package.json": 845
26
26
  },
27
27
  "largestFiles": [
28
28
  {
29
29
  "path": "vendor/osmo-lite",
30
- "bytes": 18585288
30
+ "bytes": 18900752
31
31
  },
32
32
  {
33
33
  "path": "studio/src/engine_bg.wasm",
34
- "bytes": 12109447
34
+ "bytes": 12159471
35
35
  },
36
36
  {
37
37
  "path": "node_modules/typescript/lib/typescript.js",
@@ -39,7 +39,7 @@
39
39
  },
40
40
  {
41
41
  "path": "studio/src/app.js",
42
- "bytes": 5351881
42
+ "bytes": 5592402
43
43
  },
44
44
  {
45
45
  "path": "node_modules/typescript/lib/lib.dom.d.ts",
@@ -49,6 +49,10 @@
49
49
  "path": "node_modules/typescript/lib/lib.webworker.d.ts",
50
50
  "bytes": 609557
51
51
  },
52
+ {
53
+ "path": "dist/studio.js",
54
+ "bytes": 526994
55
+ },
52
56
  {
53
57
  "path": "src/starter/animations/osmo/shape8-41.tsx",
54
58
  "bytes": 509184
@@ -77,10 +81,6 @@
77
81
  "path": "studio/src/InterDisplay-Regular-H4SUAKN5.ttf",
78
82
  "bytes": 408972
79
83
  },
80
- {
81
- "path": "dist/studio.js",
82
- "bytes": 373939
83
- },
84
84
  {
85
85
  "path": "src/resource-examples/example-video/ambient.mp4",
86
86
  "bytes": 370430
@@ -89,35 +89,35 @@
89
89
  "path": "third-party/rust-standard-library/COPYRIGHT-library.html",
90
90
  "bytes": 279302
91
91
  },
92
+ {
93
+ "path": "studio/src/preview-worker.js",
94
+ "bytes": 273168
95
+ },
92
96
  {
93
97
  "path": "node_modules/typescript/lib/lib.es5.d.ts",
94
98
  "bytes": 218439
95
99
  },
96
100
  {
97
101
  "path": "studio/src/app.css",
98
- "bytes": 189824
102
+ "bytes": 209101
99
103
  },
100
104
  {
101
105
  "path": "node_modules/zod/src/v4/core/schemas.ts",
102
106
  "bytes": 175664
103
- },
104
- {
105
- "path": "node_modules/zod/src/v3/types.ts",
106
- "bytes": 160442
107
107
  }
108
108
  ]
109
109
  },
110
110
  "hashes": {
111
- "dist/studio.js": "9c24c83ef1f45ad93d7703131eabded7a2e2fec329147c4055893d319f02a18e",
112
- "vendor/osmo-lite": "1c4782a76f56f96039e3f28651865a0edae9346b551046c6ecaf01d43215d57c",
113
- "studio/src/engine_bg.wasm": "fadf7cc6517dc6b4e78b0e1df6d0f58b3eee19174bf0fc7348d30bd55524e0af",
114
- "studio/src/app.js": "491851481315cd1a62574087029a6b5ced76c07de7fd614c5a44e79f86b2070e",
115
- "studio/src/app.css": "eb7e78d4c5855cf897a95be0f224de7489a6489f5221735ac3b3c461cd063864",
116
- "third-party/inventory.json": "49062ad067631946356ecb120f0b461beb5fd75e16c660cec42b19de31f62502"
111
+ "dist/studio.js": "15a8dd640e7a469a6f3456f8ea4eaf770059ff0683c0e84e7b1eff3ebe86366a",
112
+ "vendor/osmo-lite": "f1d19e263e061f39f2302bbab9cd44d17f3f3829243df08239cc8f629cc4d439",
113
+ "studio/src/engine_bg.wasm": "9f2e421cbbd7e72baea700c28ea470ef53d6dd94c3ba0ece359c1bc3a05483d4",
114
+ "studio/src/app.js": "1ee25a0e42ae25731c7f9ed1d32b8e83e8ad7623abda4ab6871d06c95f5fa442",
115
+ "studio/src/app.css": "cf9e0bd3e82f8f769f8e816e3bfa372cf3b368721c68a7eead0455689ba7f0ce",
116
+ "third-party/inventory.json": "7a6f8e1ae93fba684c0c6f91ff04fc1a8ef75a9752e55b9f26bc4913924b745f"
117
117
  },
118
118
  "lockfiles": {
119
- "package-lock.json": "2d0f9f1a32d5196c97f3a6cc4116390870c667686cf562ba17f5addb83ed6a01",
120
- "apps/native/Cargo.lock": "cf31d67cf167c5f32438abfeb42159eb50da61d36e4e482bae50ed3d71241373",
121
- "packages/render-engine/Cargo.lock": "a1a68051e1eea30ef0fa46bf17cd0685bb2c6a327defed0405e0d63dd61017a7"
119
+ "package-lock.json": "d09e16bbbc51545183086c6eb380a7e76ebf69b39a3a3e8f552c4043ed0621b3",
120
+ "apps/native/Cargo.lock": "109e3160fc6f68a71b18c9098af6ac3e7d13a9f2457354d0dc4585ada1ad1bf2",
121
+ "packages/render-engine/Cargo.lock": "582dea5c95112000f6e1f10f2805a22943e584a3a4c6e02ad23ae992053e151a"
122
122
  }
123
123
  }
@@ -1,3 +1,5 @@
1
+ import { collectFilmKeys } from "../../../packages/render-protocol/src/film-resources.mjs";
2
+ import { createFilmStore } from "../../../packages/render-protocol/src/film-store.node.mjs";
1
3
  import { build } from "esbuild";
2
4
  import ts from "typescript";
3
5
  import { open, readFile, stat } from "node:fs/promises";
@@ -25,7 +27,7 @@ const api = path.join(repo, "packages/scene/src/index.ts");
25
27
  const runtime = path.join(repo, "packages/scene/src/jsx-runtime.ts");
26
28
  const result = await build({
27
29
  stdin: {
28
- contents: `import scene from ${JSON.stringify(source)}; export {scene}; export {EFFECT_INPUT} from ${JSON.stringify(path.join(repo, "packages/scene/src/effects.ts"))}; export {Scene, Group, evaluateFrame} from ${JSON.stringify(api)}; export {prepareShader} from ${JSON.stringify(path.join(repo, "packages/scene/src/shader.ts"))};`,
30
+ contents: `import scene from ${JSON.stringify(source)}; export {scene}; export {EFFECT_INPUT} from ${JSON.stringify(path.join(repo, "packages/scene/src/effects.ts"))}; export {Scene, Group, evaluateMotionFrame as evaluateFrame} from ${JSON.stringify(api)}; export {prepareShader} from ${JSON.stringify(path.join(repo, "packages/scene/src/shader.ts"))};`,
29
31
  resolveDir: path.dirname(source),
30
32
  },
31
33
  plugins: [{ name: "effect-source", setup(build) {
@@ -99,13 +101,14 @@ const scene = isGroup ? Scene({
99
101
  } },
100
102
  }) : document;
101
103
  const first = evaluateFrame(scene, 0);
102
- if (first.width > 8192 || first.height > 8192 || first.totalFrames > 18000) {
104
+ if (first.width > 8192 || first.height > 8192 || first.totalFrames > 36000) {
103
105
  throw new Error(
104
- "Prototype limits: 8192 pixels per side and 18,000 frames per composition",
106
+ "Prototype limits: 8192 pixels per side and 36,000 frames per composition",
105
107
  );
106
108
  }
107
109
  if (!Number.isInteger(first.width) || !Number.isInteger(first.height))
108
110
  throw new Error("Native composition dimensions must be whole pixels");
111
+ const filmKeys = new Set();
109
112
  const fonts = new Map();
110
113
  const dependencies = new Set([
111
114
  source,
@@ -116,6 +119,7 @@ const dependencies = new Set([
116
119
  const shaders = new Map();
117
120
  async function collectEffects(target) {
118
121
  for (const effect of target.effects ?? []) {
122
+ if (effect.film) continue;
119
123
  let key = "effect:" + effect.code;
120
124
  if (effect.src) {
121
125
  effect.src = path.resolve(path.dirname(path.resolve(repo, effect.sourceFile ?? source)), effect.src);
@@ -139,7 +143,14 @@ async function collectFonts(nodes) {
139
143
  if(node.type === "composition") { await collectEffects(node.scene); await collectFonts(node.scene.children); }
140
144
  if (["group","model","surface"].includes(node.type)) await collectFonts(node.children);
141
145
  if (["image", "video", "audio", "model"].includes(node.type)) {
142
- node.src = path.resolve(
146
+ if (node.type === "video" && node.originalSrc && process.env.OSMO_MEDIA_SOURCE === "original") {
147
+ const original = path.resolve(path.dirname(path.resolve(repo, node.originalSourceFile ?? node.sourceFile ?? source)), node.originalSrc);
148
+ if (!(await stat(original).catch(() => null))?.isFile()) throw new Error(`Original video is unavailable: ${original}`);
149
+ node.src = original;
150
+ }
151
+ delete node.originalSrc;
152
+ delete node.originalSourceFile;
153
+ node.src = path.resolve(
143
154
  path.dirname(path.resolve(repo, node.sourceFile ?? source)),
144
155
  node.src,
145
156
  );
@@ -202,8 +213,12 @@ try {
202
213
  });
203
214
  for (let frame = 0; frame < first.totalFrames; frame++) {
204
215
  const evaluated = frame === 0 ? first : evaluateFrame(scene, frame);
216
+ for (const sample of evaluated.motionSamples ?? []) {
217
+ await collectEffects(sample); await collectFonts(sample.children);
218
+ }
205
219
  await collectEffects(evaluated);
206
220
  await collectFonts(evaluated.children);
221
+ collectFilmKeys(evaluated, filmKeys);
207
222
  await line(evaluated);
208
223
  }
209
224
  const assets = [];
@@ -216,6 +231,9 @@ try {
216
231
  bytes: (await readFile(font)).toString("base64"),
217
232
  });
218
233
  }
234
+ // Installed CLI sets OSMO_FILM_TABLES to the shared resource directory.
235
+ // Direct desktop/check-out renderers retain their existing asset location.
236
+ await createFilmStore({directory: process.env.OSMO_FILM_TABLES ?? path.join(repo, "packages/render-engine/assets/film")}).ensureAll(filmKeys);
219
237
  await line({ assets, dependencies: [...dependencies] });
220
238
  } finally {
221
239
  await file.close();