mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-03 04:38:33 +00:00
feat(cli): add visual inspect command (#480)
* feat: add layout audit command * feat: refine visual inspect command
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: hyperframes-cli
|
||||
description: HyperFrames CLI tool — hyperframes init, lint, preview, render, transcribe, tts, doctor, browser, info, upgrade, compositions, docs, benchmark. Use when scaffolding a project, linting or validating compositions, previewing in the studio, rendering to video, transcribing audio, generating TTS, or troubleshooting the HyperFrames environment.
|
||||
description: HyperFrames CLI tool — hyperframes init, lint, inspect, preview, render, transcribe, tts, doctor, browser, info, upgrade, compositions, docs, benchmark. Use when scaffolding a project, linting, validating, inspecting visual layout in compositions, previewing in the studio, rendering to video, transcribing audio, generating TTS, or troubleshooting the HyperFrames environment.
|
||||
---
|
||||
|
||||
# HyperFrames CLI
|
||||
@@ -12,10 +12,11 @@ Everything runs through `npx hyperframes`. Requires Node.js >= 22 and FFmpeg.
|
||||
1. **Scaffold** — `npx hyperframes init my-video`
|
||||
2. **Write** — author HTML composition (see the `hyperframes` skill)
|
||||
3. **Lint** — `npx hyperframes lint`
|
||||
4. **Preview** — `npx hyperframes preview`
|
||||
5. **Render** — `npx hyperframes render`
|
||||
4. **Visual inspect** — `npx hyperframes inspect`
|
||||
5. **Preview** — `npx hyperframes preview`
|
||||
6. **Render** — `npx hyperframes render`
|
||||
|
||||
Lint before preview — catches missing `data-composition-id`, overlapping tracks, unregistered timelines.
|
||||
Lint and inspect before preview. `lint` catches missing `data-composition-id`, overlapping tracks, and unregistered timelines. `inspect` opens the rendered composition in headless Chrome, seeks through the timeline, and reports text spilling out of bubbles/containers or off the canvas.
|
||||
|
||||
## Scaffolding
|
||||
|
||||
@@ -42,6 +43,27 @@ npx hyperframes lint --json # machine-readable
|
||||
|
||||
Lints `index.html` and all files in `compositions/`. Reports errors (must fix), warnings (should fix), and info (with `--verbose`).
|
||||
|
||||
## Visual Inspect
|
||||
|
||||
```bash
|
||||
npx hyperframes inspect # inspect rendered layout over the timeline
|
||||
npx hyperframes inspect ./my-project # specific project
|
||||
npx hyperframes inspect --json # agent-readable findings
|
||||
npx hyperframes inspect --samples 15 # denser timeline sweep
|
||||
npx hyperframes inspect --at 1.5,4,7.25 # explicit hero-frame timestamps
|
||||
```
|
||||
|
||||
Use this after `lint` and `validate`, especially for compositions with speech bubbles, cards, captions, or tight typography. It reports:
|
||||
|
||||
- Text extending outside the nearest visual container or bubble
|
||||
- Text clipped by its own fixed-width/fixed-height box
|
||||
- Text extending outside the composition canvas
|
||||
- Children escaping clipping containers
|
||||
|
||||
Errors should be fixed before rendering. Warnings are surfaced for agent review; add `--strict` to fail on warnings too. Repeated static issues are collapsed by default so JSON output stays compact for LLM context windows. If overflow is intentional for an entrance/exit animation, mark the element or ancestor with `data-layout-allow-overflow`. If a decorative element should never be audited, mark it with `data-layout-ignore`.
|
||||
|
||||
`npx hyperframes layout` remains available as a compatibility alias for the same visual inspection pass.
|
||||
|
||||
## Previewing
|
||||
|
||||
```bash
|
||||
|
||||
@@ -277,11 +277,28 @@ When no `visual-style.md` or animation direction is provided, follow [house-styl
|
||||
## Output Checklist
|
||||
|
||||
- [ ] `npx hyperframes lint` and `npx hyperframes validate` both pass
|
||||
- [ ] `npx hyperframes inspect` passes, or every reported overflow is intentionally marked
|
||||
- [ ] Contrast warnings addressed (see Quality Checks below)
|
||||
- [ ] Layout issues addressed (see Quality Checks below)
|
||||
- [ ] Animation choreography verified (see Quality Checks below)
|
||||
|
||||
## Quality Checks
|
||||
|
||||
### Visual Inspect
|
||||
|
||||
`hyperframes inspect` runs the composition in headless Chrome, seeks through the timeline, and maps visual layout issues with timestamps, selectors, bounding boxes, and fix hints. Run it after `lint` and `validate`:
|
||||
|
||||
```bash
|
||||
npx hyperframes inspect
|
||||
npx hyperframes inspect --json
|
||||
```
|
||||
|
||||
Failures usually mean text is spilling out of a bubble/card, a fixed-size label is clipping dynamic copy, or text has moved off the canvas. Fix by increasing container size or padding, reducing font size or letter spacing, adding a real `max-width` so text wraps inside the container, or using `window.__hyperframes.fitTextFontSize(...)` for dynamic copy.
|
||||
|
||||
Use `--samples 15` for dense videos and `--at 1.5,4,7.25` for specific hero frames. Repeated static issues are collapsed by default to avoid flooding agent context. If overflow is intentional for an entrance/exit animation, mark the element or ancestor with `data-layout-allow-overflow`. If a decorative element should never be audited, mark it with `data-layout-ignore`.
|
||||
|
||||
`hyperframes layout` is the compatibility alias for the same check.
|
||||
|
||||
### Contrast
|
||||
|
||||
`hyperframes validate` runs a WCAG contrast audit by default. It seeks to 5 timestamps, screenshots the page, samples background pixels behind every text element, and computes contrast ratios. Failures appear as warnings:
|
||||
|
||||
Reference in New Issue
Block a user