@hyperframes/studio 0.8.184 → 0.8.185

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
@@ -14,7 +14,7 @@
14
14
  document.documentElement.dataset.theme = "paper";
15
15
  }
16
16
  </script>
17
- <script type="module" crossorigin src="/assets/index-BABXr78Q.js"></script>
17
+ <script type="module" crossorigin src="/assets/index-C_6rTpaB.js"></script>
18
18
  <link rel="stylesheet" crossorigin href="/assets/index-CESvLzz0.css">
19
19
  </head>
20
20
  <body>
package/dist/index.js CHANGED
@@ -26696,7 +26696,7 @@ var GUARDRAIL_LINES = [
26696
26696
  "- Make a targeted change to this element only, unless the request is a timeline edit.",
26697
26697
  "- Preserve the rest of the composition and its timing, except what a timeline edit changes.",
26698
26698
  "- Do not modify other elements' data-* attributes or positioning, except where the requested timeline edit requires it (split, retime, reorder, copy a group, swap media).",
26699
- "- For timeline edits (trim, split, speed, volume, copy, swap), follow the creator-editing-recipes reference of the hyperframes-core skill and use its exact attribute forms.",
26699
+ "- For timeline edits (trim, split, speed, volume, copy, swap), use the `hyperframes timeline` edit commands (`hyperframes-cli` skill) or the exact attribute forms in the `hyperframes` skill's `references/format.md`.",
26700
26700
  "- Prefer existing inline styles or existing CSS rules for this element over adding unrelated selectors."
26701
26701
  ];
26702
26702
  function formatBoundingBox(bounds) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hyperframes/studio",
3
- "version": "0.8.184",
3
+ "version": "0.8.185",
4
4
  "description": "",
5
5
  "repository": {
6
6
  "type": "git",
@@ -59,12 +59,12 @@
59
59
  "dockview-react": "8.3.1",
60
60
  "gsap": "^3.13.0",
61
61
  "mediabunny": "^1.45.3",
62
- "@hyperframes/core": "0.8.184",
63
- "@hyperframes/parsers": "0.8.184",
64
- "@hyperframes/sdk": "0.8.184",
65
- "@hyperframes/shader-transitions": "0.8.184",
66
- "@hyperframes/studio-server": "0.8.184",
67
- "@hyperframes/player": "0.8.184"
62
+ "@hyperframes/core": "0.8.185",
63
+ "@hyperframes/parsers": "0.8.185",
64
+ "@hyperframes/shader-transitions": "0.8.185",
65
+ "@hyperframes/player": "0.8.185",
66
+ "@hyperframes/studio-server": "0.8.185",
67
+ "@hyperframes/sdk": "0.8.185"
68
68
  },
69
69
  "devDependencies": {
70
70
  "@tailwindcss/vite": "^4.3.3",
@@ -81,7 +81,7 @@
81
81
  "vite": "^6.4.2",
82
82
  "vitest": "^4.1.11",
83
83
  "zustand": "^5.0.0",
84
- "@hyperframes/producer": "0.8.184"
84
+ "@hyperframes/producer": "0.8.185"
85
85
  },
86
86
  "peerDependencies": {
87
87
  "react": "19",
@@ -198,7 +198,7 @@ export function trackEqChanged(band: string, value: number): void {
198
198
  *
199
199
  * This is how agent-applied effects become visible at all. An agent asked to
200
200
  * fix a mix does not drive the panel — it edits the composition HTML, or runs
201
- * `scripts/carve.mjs`, and the rack simply finds the result already present.
201
+ * `skills/media-use/audio/scripts/carve.mjs`, and the rack simply finds the result already present.
202
202
  * None of the events above will ever fire for that work.
203
203
  *
204
204
  * So the panel reports the shape of what it was handed, and how many edits this
@@ -81,7 +81,7 @@ describe("buildElementAgentPrompt", () => {
81
81
  "- Make a targeted change to this element only, unless the request is a timeline edit.",
82
82
  "- Preserve the rest of the composition and its timing, except what a timeline edit changes.",
83
83
  "- Do not modify other elements' data-* attributes or positioning, except where the requested timeline edit requires it (split, retime, reorder, copy a group, swap media).",
84
- "- For timeline edits (trim, split, speed, volume, copy, swap), follow the creator-editing-recipes reference of the hyperframes-core skill and use its exact attribute forms.",
84
+ "- For timeline edits (trim, split, speed, volume, copy, swap), use the `hyperframes timeline` edit commands (`hyperframes-cli` skill) or the exact attribute forms in the `hyperframes` skill's `references/format.md`.",
85
85
  "- Prefer existing inline styles or existing CSS rules for this element over adding unrelated selectors.",
86
86
  ].join("\n"),
87
87
  );
@@ -164,7 +164,7 @@ describe("buildPickerAgentPrompt", () => {
164
164
  "- Make a targeted change to this element only, unless the request is a timeline edit.",
165
165
  "- Preserve the rest of the composition and its timing, except what a timeline edit changes.",
166
166
  "- Do not modify other elements' data-* attributes or positioning, except where the requested timeline edit requires it (split, retime, reorder, copy a group, swap media).",
167
- "- For timeline edits (trim, split, speed, volume, copy, swap), follow the creator-editing-recipes reference of the hyperframes-core skill and use its exact attribute forms.",
167
+ "- For timeline edits (trim, split, speed, volume, copy, swap), use the `hyperframes timeline` edit commands (`hyperframes-cli` skill) or the exact attribute forms in the `hyperframes` skill's `references/format.md`.",
168
168
  "- Prefer existing inline styles or existing CSS rules for this element over adding unrelated selectors.",
169
169
  ].join("\n");
170
170
  expect(domPrompt.endsWith(guardrails)).toBe(true);
@@ -31,7 +31,7 @@ const GUARDRAIL_LINES = [
31
31
  "- Make a targeted change to this element only, unless the request is a timeline edit.",
32
32
  "- Preserve the rest of the composition and its timing, except what a timeline edit changes.",
33
33
  "- Do not modify other elements' data-* attributes or positioning, except where the requested timeline edit requires it (split, retime, reorder, copy a group, swap media).",
34
- "- For timeline edits (trim, split, speed, volume, copy, swap), follow the creator-editing-recipes reference of the hyperframes-core skill and use its exact attribute forms.",
34
+ "- For timeline edits (trim, split, speed, volume, copy, swap), use the `hyperframes timeline` edit commands (`hyperframes-cli` skill) or the exact attribute forms in the `hyperframes` skill's `references/format.md`.",
35
35
  "- Prefer existing inline styles or existing CSS rules for this element over adding unrelated selectors.",
36
36
  ];
37
37
 
@@ -16,7 +16,7 @@ import type { DomEditSelection } from "./domEditingTypes";
16
16
  /**
17
17
  * This is the only way agent-applied effects become visible. An agent asked to
18
18
  * fix a mix does not drive this panel — it edits the composition HTML, or runs
19
- * `scripts/carve.mjs`, and the rack simply finds the work already done. Not
19
+ * `skills/media-use/audio/scripts/carve.mjs`, and the rack simply finds the work already done. Not
20
20
  * one of the panel's own events fires for any of it.
21
21
  *
22
22
  * So: watch the chain's shape, and report it when it changes without a panel
@@ -3,7 +3,7 @@ import { buildProjectApiPath } from "../../utils/projectRouting";
3
3
  // How this project came to exist, and roughly what shape it is.
4
4
  //
5
5
  // A crash report says what broke. It does not say what the user was working ON,
6
- // and "a project made by /faceless-explainer with 14 compositions and 60 assets"
6
+ // and "a project made by /slideshow with 14 compositions and 60 assets"
7
7
  // reproduces a crash that "Cannot read properties of undefined" never will.
8
8
  //
9
9
  // Held at module scope on purpose: a crash unmounts the React tree, so anything
@@ -1,4 +1,4 @@
1
- import { existsSync, readFileSync } from "node:fs";
1
+ import { readFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { describe, expect, it } from "vitest";
4
4
  import {
@@ -8,7 +8,7 @@ import {
8
8
  safeBoxInsetPercent,
9
9
  } from "./previewSafeMargins";
10
10
 
11
- const SKILL_PATH = join(import.meta.dirname, "../../../../skills/hyperframes-studio/SKILL.md");
11
+ const SKILL_PATH = join(import.meta.dirname, "../../../../skills/hyperframes/SKILL.md");
12
12
 
13
13
  describe("safe boxes", () => {
14
14
  it("are the 90% and 80% boxes, inset 5% and 10% from every edge", () => {
@@ -17,15 +17,15 @@ describe("safe boxes", () => {
17
17
  });
18
18
  });
19
19
 
20
- // Skipped until the hyperframes-studio skill exists on this branch.
21
- describe.runIf(existsSync(SKILL_PATH))("hyperframes-studio skill matches the constants", () => {
22
- it("has a safe-margins line naming both percentages", () => {
20
+ describe("the hyperframes skill matches the constants", () => {
21
+ it("has a safe-box line naming both percentages", () => {
23
22
  const skill = readFileSync(SKILL_PATH, "utf8");
24
23
  const line = skill
25
24
  .split("\n")
26
25
  .find(
27
26
  (l) =>
28
- /\bsafe margins?\b/i.test(l) &&
27
+ /action-safe/i.test(l) &&
28
+ /title-safe/i.test(l) &&
29
29
  l.includes(`${ACTION_SAFE_PERCENT}%`) &&
30
30
  l.includes(`${TITLE_SAFE_PERCENT}%`),
31
31
  );