Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
feb256d
refactor(cli): unify seek/settle and Chrome launch across browser com…
miguel-heygen Jul 10, 2026
7d6d413
feat(cli): add check — single-session verification gate
miguel-heygen Jul 10, 2026
7ab6c2b
feat(cli): caption-zone and frame-check gates on check
miguel-heygen Jul 10, 2026
3a02942
feat(cli): run-ID telemetry correlation and check breakdown event
miguel-heygen Jul 10, 2026
58f45ef
feat(cli): deprecate validate, inspect, layout in favor of check
miguel-heygen Jul 10, 2026
f4cef54
feat(cli): snapshot --zoom and per-finding crops on check --snapshots
miguel-heygen Jul 10, 2026
94f6de8
feat(cli): persistence-tiered findings, frozen-sweep guard, occlusion…
miguel-heygen Jul 10, 2026
b218ee7
chore(examples): mark product-promo cursor and comment layering inten…
miguel-heygen Jul 10, 2026
cf7c1d7
docs(cli,skills): teach check as the canonical verification gate
miguel-heygen Jul 10, 2026
cea3458
refactor(cli): single-source-of-truth pass over the check branch
miguel-heygen Jul 10, 2026
4b03866
fix(cli): contrast gate judges only readable content; examples pass c…
miguel-heygen Jul 10, 2026
2ceb068
fix(cli): page closures survive keepNames transpilation; format motio…
miguel-heygen Jul 10, 2026
c169dba
test(cli): import the page-function guard in its new unit test
miguel-heygen Jul 10, 2026
96cb5e3
test(cli): type the guard test's mock so the full typecheck passes
miguel-heygen Jul 10, 2026
67cdf0f
fix(cli): address review — clip-duration audit in check, failure clas…
miguel-heygen Jul 10, 2026
659cb6a
feat(cli): --frame-check accepts a severity/seek/tol spec
miguel-heygen Jul 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ After creating or editing any `.html` composition:

```bash
npx hyperframes lint # Static HTML structure check
npx hyperframes validate # Runtime check (headless Chrome — catches JS errors, missing assets)
npx hyperframes check # Browser gate (headless Chrome — runtime errors, layout, motion, WCAG contrast)
```

Both must pass before previewing or considering work complete.
Expand Down
4 changes: 2 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ Atomic capabilities the creation workflows compose against — pull one when you
- `/hyperframes-keyframes` — seek-safe keyframe authoring across runtimes: GSAP timelines, CSS keyframes, Anime.js, WAAPI, FLIP, paths, masks, SVG morph/draw, text trails, 3D depth; plus `hyperframes keyframes` diagnostics for surfacing and verifying rendered motion.
- `/hyperframes-creative` — non-animation creative direction: `frame.md` / `design.md` handling, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns.
- `/media-use` — the media OS: resolve any media need (BGM, SFX, image, icon, logo, voice, color grade, LUT) into a frozen local file or paste-ready block + ledger record; generate via TTS / music / image models when the catalog misses; transcribe, caption, remove backgrounds, and reuse assets across projects. One shared `scripts/audio.mjs` engine + manifest tracking; keeps search noise on disk.
- `/hyperframes-cli` — CLI dev loop: `init`, `add`, `lint`, `validate`, `inspect`, `preview`, `render`, `publish`, `doctor`, `lambda` (AWS Lambda cloud rendering).
- `/hyperframes-cli` — CLI dev loop: `init`, `add`, `lint`, `check`, `snapshot`, `preview`, `render`, `publish`, `doctor`, `lambda` (AWS Lambda cloud rendering).
- `/hyperframes-registry` — install and wire registry blocks and components into compositions via `hyperframes add`. Covers authoring a new block or component to contribute upstream.
- `/figma` — import Figma assets, tokens, components, and storyboard sections → reconstructed motion (frames read as states, not slides) (REST/CLI) plus Motion animations (MCP) and shaders (MCP source / native export) into a composition.

Expand Down Expand Up @@ -81,7 +81,7 @@ After creating or editing any `.html` composition:

```bash
npx hyperframes lint # Static HTML structure check
npx hyperframes validate # Runtime check (headless Chrome — catches JS errors, missing assets)
npx hyperframes check # Browser gate (headless Chrome — runtime errors, layout, motion, WCAG contrast)
```

Both must pass before previewing or considering work complete.
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ Atomic capabilities the creation workflows compose against — pull one when you
| `/hyperframes-keyframes` | Seek-safe keyframe authoring across runtimes — GSAP timelines, CSS keyframes, Anime.js, WAAPI, FLIP, paths, masks, SVG morph/draw, 3D depth — plus `hyperframes keyframes` diagnostics for rendered motion. |
| `/hyperframes-creative` | Non-animation creative direction — `frame.md` / `design.md`, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns. |
| `/media-use` | The media OS — resolve any media need (BGM, SFX, image, icon, logo, voice, color grade, LUT) into a frozen local file or paste-ready block + ledger record, generate via TTS/music/image models when the catalog misses, transcribe, caption, remove backgrounds, and reuse assets across projects. One shared audio engine + manifest tracking. |
| `/hyperframes-cli` | CLI dev loop — `init`, `lint`, `validate`, `inspect`, `preview`, `render`, `publish`, `doctor`, plus AWS Lambda cloud rendering (`lambda deploy / render / progress`). |
| `/hyperframes-cli` | CLI dev loop — `init`, `lint`, `check`, `snapshot`, `preview`, `render`, `publish`, `doctor`, plus AWS Lambda cloud rendering (`lambda deploy / render / progress`). |
| `/hyperframes-registry` | Install and wire registry blocks and components into compositions via `hyperframes add`. Authoring a new block or component to contribute upstream. |
| `/figma` | Import Figma assets, tokens, components, and storyboard sections → reconstructed motion (frames read as states, not slides) (REST/CLI) plus Motion animations (MCP) and shaders (MCP source / native export) into a composition. |

Expand Down
2 changes: 1 addition & 1 deletion docs/contributing/catalog.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ Not everything belongs in the registry. The bar is production quality.
<Step title="Validate">
```bash
hyperframes lint
hyperframes validate
hyperframes check
npx oxfmt your-block.html
```
</Step>
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/pipeline.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ Three checks before delivery:

```bash
npx hyperframes lint # static HTML structure checks
npx hyperframes validate # loads in headless Chrome, catches runtime errors
npx hyperframes check # one browser session: runtime errors, layout, motion, contrast
npx hyperframes snapshot my-video --at 2.9,10.4 # PNGs at beat midpoints
```

Expand Down
2 changes: 1 addition & 1 deletion docs/guides/prompting.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -268,7 +268,7 @@ Things that cause friction (or wrong output):
- **Don't ask for React / Vue components.** Hyperframes compositions are plain HTML with `data-*` attributes and a GSAP timeline. Asking for "a React component for the intro" forces the agent to translate later.
- **Don't ask for 4K or 60fps unless you need it.** Defaults (1920×1080, 30fps) render fast and look great. Higher specs slow rendering meaningfully.
- **Don't skip the slash command.** Without `/hyperframes`, the agent may guess at HTML video conventions instead of using the framework's actual rules (`class="clip"` on timed elements, `window.__timelines` registration, etc.).
- **Don't paste long error logs into the prompt without context.** Run `npx hyperframes lint` and `npx hyperframes validate` first — lint catches structural issues, validate catches runtime errors (JS exceptions, missing assets, contrast problems).
- **Don't paste long error logs into the prompt without context.** Run `npx hyperframes check` first — lint catches structural issues, validate catches runtime errors (JS exceptions, missing assets, contrast problems).
- **Don't assume the agent knows your assets.** Mention file paths explicitly (`assets/intro.mp4`, `assets/logo.png`) — the agent will check what's there but a hint speeds it up.

## Recommended workflow
Expand Down
2 changes: 1 addition & 1 deletion docs/guides/skills.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ Atomic capabilities the creation workflows compose against — pull one when you
| `/hyperframes-keyframes` | Seek-safe keyframe authoring across runtimes — GSAP timelines, CSS keyframes, Anime.js, WAAPI, FLIP, paths, masks, SVG morph/draw, 3D depth — plus `hyperframes keyframes` diagnostics for rendered motion. |
| `/hyperframes-creative` | Non-animation creative direction — `frame.md` / `design.md`, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns. |
| `/media-use` | The media OS — resolve any media need (BGM, SFX, image, icon, logo, voice, color grade, LUT) into a frozen local file or paste-ready block + ledger record, generate via TTS/music/image models when the catalog misses, transcribe, caption, remove backgrounds, and reuse assets across projects. One shared audio engine + manifest tracking. |
| `/hyperframes-cli` | CLI dev loop — `init`, `lint`, `validate`, `inspect`, `preview`, `render`, `publish`, `doctor`, plus AWS Lambda cloud rendering (`lambda deploy / render / progress / destroy / policies`). |
| `/hyperframes-cli` | CLI dev loop — `init`, `lint`, `check`, `snapshot`, `preview`, `render`, `publish`, `doctor`, plus AWS Lambda cloud rendering (`lambda deploy / render / progress / destroy / policies`). |
| `/hyperframes-registry` | Install and wire registry blocks and components into compositions via `hyperframes add`. Authoring a new block or component to contribute upstream. |
| `/figma` | Import Figma assets, tokens, components, and storyboard sections → reconstructed motion (frames read as states, not slides) (REST/CLI) plus Motion animations (MCP) and shaders (MCP source / native export) into a composition. |

Expand Down
10 changes: 5 additions & 5 deletions docs/guides/video-editor-cheatsheet.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ Before showing or rendering a project:

```bash
npx hyperframes lint
npx hyperframes validate
npx hyperframes check
npx hyperframes render --quality standard --output review.mp4
```

Expand Down Expand Up @@ -174,8 +174,8 @@ I moved the hero title and resized the CTA manually in Studio. Inspect the chang
| `npx hyperframes capture https://example.com` | Capture a website as source material for a video |
| `npx hyperframes preview` | Open the live Studio preview |
| `npx hyperframes lint` | Catch structural mistakes before preview or render |
| `npx hyperframes validate` | Run the composition in headless Chrome to catch runtime errors |
| `npx hyperframes inspect` | Find text overflow and layout problems across the timeline |
| `npx hyperframes check` | Run the composition in headless Chrome to catch runtime errors |
| `npx hyperframes check` | Find text overflow and layout problems across the timeline |
| `npx hyperframes snapshot --at 1,3,5` | Save PNG checks at exact timestamps |
| `npx hyperframes render --output final.mp4` | Render the video |
| `npx hyperframes publish` | Upload the project and get a shareable HyperFrames URL |
Expand Down Expand Up @@ -278,9 +278,9 @@ For editor-facing changes, keep `npx hyperframes preview` running, then have the
| --- | --- |
| Preview will not start | `npx hyperframes doctor` |
| Port already in use | `npx hyperframes preview --port 4567` |
| Render fails | `npx hyperframes lint` then `npx hyperframes validate` |
| Render fails | `npx hyperframes lint` then `npx hyperframes check` |
| Need exact frame checks | `npx hyperframes snapshot --at 1,2.5,5` |
| Text overflows in the frame | `npx hyperframes inspect` |
| Text overflows in the frame | `npx hyperframes check` |
| Final render is too slow | Try `--quality draft`, reduce image sizes, or lower `--fps` |
| Need to share editable project | `npx hyperframes publish` |

Expand Down
30 changes: 30 additions & 0 deletions docs/packages/cli.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -520,6 +520,34 @@ Word-level transcripts (whisper output) are grouped into readable caption cues o

The linter detects missing attributes, missing adapter libraries (GSAP, Lottie, Three.js), structural problems, and more. See [Common Mistakes](/guides/common-mistakes) for details on each rule.

### `check`

The browser verification gate: everything the old `validate` → `inspect` → `snapshot` loop did, in **one** command with one browser session:

```bash
npx hyperframes check [dir]
npx hyperframes check [dir] --json # {ok, lint, runtime, layout, motion, contrast, snapshots}
npx hyperframes check [dir] --snapshots # annotated overview frames + per-finding crops
npx hyperframes check [dir] --at 1.5,4,7.25
npx hyperframes check [dir] --strict # exit non-zero on warnings too
```

`check` runs the linter first (browser skipped entirely on lint errors), then loads the bundled composition once and sweeps one seek grid running every audit per sample: runtime console errors and failed requests, layout defects (overflow, clipping, held overlaps, occlusion), `*.motion.json` sidecar assertions, and WCAG AA contrast.

| Flag | Description |
|------|-------------|
| `--json` | Aggregated machine-readable envelope; every finding carries selector, `data-*` identity, source file, bbox, and sample time |
| `--snapshots` | Write overview frames (annotated with labeled finding boxes when there are errors) plus `finding-NN-<code>.png` crops |
| `--samples` / `--at` / `--at-transitions` | Control the seek grid (default 9 samples; `--at-transitions` adds tween boundaries) |
| `--tolerance` | Allowed overflow in px before reporting (default 2) |
| `--timeout` | Initial settle budget in ms (default 3000) |
| `--no-contrast` | Skip the WCAG audit while iterating |
| `--strict` | Exit non-zero on warnings too (default: only errors) |
| `--caption-zone "<x0=..;y0=..;x1=..;y1=..>"` | Opt-in band gate: flags content whose center sits inside the fractional band (optional `severity`, `seek`) |
| `--frame-check` | Opt-in media out-of-frame detection (img/svg/video/canvas) |

Contrast failures are **errors** and include the sampled fg/bg colors, measured vs required ratio, and a suggested compliant color. Severity is persistence-aware: single-sample transients demote to info, held findings gate the exit code, and a frozen timeline on a 3s+ composition fails with `sweep_static`.

### `beats`

Detect the beats in a composition's music track and write them to a beat file the Studio uses to draw beat guides on the timeline:
Expand Down Expand Up @@ -549,6 +577,8 @@ Word-level transcripts (whisper output) are grouped into readable caption cues o

### `inspect`

<Warning>Deprecated: use [`check`](#check) — it covers this layout sweep plus runtime, motion, and contrast in one browser session. `inspect` keeps working and marks `_meta.deprecated: true` in JSON output.</Warning>

Inspect rendered visual layout across the composition timeline:

```bash
Expand Down
Loading
Loading