@hyperframes/studio 0.2.3-alpha.1 → 0.2.3

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/index.html CHANGED
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8" />
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
6
  <title>HyperFrames Studio</title>
7
- <script type="module" crossorigin src="/assets/index-DA_l-VKo.js"></script>
7
+ <script type="module" crossorigin src="/assets/index-B0VCLOXQ.js"></script>
8
8
  <link rel="stylesheet" crossorigin href="/assets/index-BT9D8I7B.css">
9
9
  </head>
10
10
  <body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperframes/studio",
3
- "version": "0.2.3-alpha.1",
3
+ "version": "0.2.3",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",
@@ -32,7 +32,7 @@
32
32
  "@phosphor-icons/react": "^2.1.10",
33
33
  "codemirror": "^6.0.1",
34
34
  "motion": "^12.38.0",
35
- "@hyperframes/core": "0.2.3-alpha.1"
35
+ "@hyperframes/core": "0.2.3"
36
36
  },
37
37
  "devDependencies": {
38
38
  "@types/react": "^19.0.0",
@@ -7,7 +7,7 @@ interface RenderQueueProps {
7
7
  projectId: string;
8
8
  onDelete: (jobId: string) => void;
9
9
  onClearCompleted: () => void;
10
- onStartRender: (format: "mp4" | "webm") => void;
10
+ onStartRender: (format: "mp4" | "webm" | "mov") => void;
11
11
  isRendering: boolean;
12
12
  }
13
13
 
@@ -15,20 +15,21 @@ function FormatExportButton({
15
15
  onStartRender,
16
16
  isRendering,
17
17
  }: {
18
- onStartRender: (format: "mp4" | "webm") => void;
18
+ onStartRender: (format: "mp4" | "webm" | "mov") => void;
19
19
  isRendering: boolean;
20
20
  }) {
21
- const [format, setFormat] = useState<"mp4" | "webm">("mp4");
21
+ const [format, setFormat] = useState<"mp4" | "webm" | "mov">("mp4");
22
22
 
23
23
  return (
24
24
  <div className="flex items-center gap-0.5">
25
25
  <select
26
26
  value={format}
27
- onChange={(e) => setFormat(e.target.value as "mp4" | "webm")}
27
+ onChange={(e) => setFormat(e.target.value as "mp4" | "webm" | "mov")}
28
28
  disabled={isRendering}
29
29
  className="h-5 px-1 text-[10px] rounded-l bg-neutral-800 border border-neutral-700 text-neutral-300 outline-none disabled:opacity-50"
30
30
  >
31
31
  <option value="mp4">MP4</option>
32
+ <option value="mov">MOV</option>
32
33
  <option value="webm">WebM</option>
33
34
  </select>
34
35
  <button
@@ -59,7 +59,7 @@ export function useRenderQueue(projectId: string | null) {
59
59
 
60
60
  // Start a render and track progress via SSE
61
61
  const startRender = useCallback(
62
- async (fps = 30, quality = "standard", format: "mp4" | "webm" = "mp4") => {
62
+ async (fps = 30, quality = "standard", format: "mp4" | "webm" | "mov" = "mp4") => {
63
63
  if (!projectId) return;
64
64
 
65
65
  const startTime = Date.now();
@@ -96,7 +96,8 @@ export function useRenderQueue(projectId: string | null) {
96
96
  }
97
97
  const { jobId } = await res.json();
98
98
 
99
- const ext = format === "webm" ? ".webm" : ".mp4";
99
+ const FORMAT_EXT: Record<string, string> = { mp4: ".mp4", webm: ".webm", mov: ".mov" };
100
+ const ext = FORMAT_EXT[format] ?? ".mp4";
100
101
  const job: RenderJob = {
101
102
  id: jobId,
102
103
  status: "rendering",