Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
179 commits
Select commit Hold shift + click to select a range
67ed767
fix(docs): use claude.ai/design link, remove raw download option
ukimsanov Apr 25, 2026
bdc1012
Merge pull request #496 from heygen-com/fix/docs-claude-design-links
ukimsanov Apr 25, 2026
34c710c
chore: release v0.4.28
miguel-heygen Apr 25, 2026
894f6e3
feat(studio): server-side waveform generation with caching
alexcraviotto Apr 25, 2026
a00161d
Merge pull request #497 from alexcraviotto/feat/no-ref/server-side-wa…
miguel-heygen Apr 25, 2026
970367f
chore: release v0.4.29
miguel-heygen Apr 25, 2026
8cc2084
fix(cli): snapshot resolves runtime from own dist, not monorepo layout
ukimsanov Apr 26, 2026
9832ce6
Merge pull request #499 from heygen-com/fix/snapshot-runtime-path
miguel-heygen Apr 26, 2026
2b836cc
chore: release v0.4.30
jrusso1020 Apr 26, 2026
9588a6d
fix: load skill helper dependencies
miguel-heygen Apr 26, 2026
343bb8e
docs(skills): clarify preview handoff URL
miguel-heygen Apr 26, 2026
4af64d8
Merge pull request #504 from heygen-com/fix/codex-plugin-preview-handoff
miguel-heygen Apr 26, 2026
6e19d88
chore: release v0.4.31
miguel-heygen Apr 26, 2026
1f2ddc3
fix: resolve build race condition by ensuring core builds first
afanty2021 Apr 27, 2026
2935be6
Merge pull request #505 from afanty2021/main
miguel-heygen Apr 27, 2026
7ed3d04
feat(skills): scaffold remotion-to-hyperframes skill (1/7)
jrusso1020 Apr 27, 2026
2ed47eb
chore(deps): update dependency @google/genai to ^1.50.1
renovate[bot] Apr 27, 2026
fe017b4
feat(producer): true alpha output for webm, mov, and png-sequence
yusoufu Apr 27, 2026
c32db3e
fix: isolate studio sub-composition previews
miguel-heygen Apr 27, 2026
3701bb9
fix: flatten inlined composition roots
miguel-heygen Apr 27, 2026
35b7043
fix: harden skill dependency bootstrap
miguel-heygen Apr 27, 2026
2c9aee2
docs: clarify alpha PR target branch
miguel-heygen Apr 27, 2026
9e05322
test(transparency): paint body background in fixture so it actually f…
yusoufu Apr 27, 2026
6d4b091
Merge pull request #520 from heygen-com/docs/alpha-prs-target-next
miguel-heygen Apr 27, 2026
5397431
Merge pull request #500 from heygen-com/fix/animation-map-package-res…
miguel-heygen Apr 27, 2026
c58b995
refactor: use postcss for composition CSS scoping
miguel-heygen Apr 27, 2026
d3b2900
fix: preserve inferred composition ids when inlining
miguel-heygen Apr 27, 2026
6ea2e54
fix: preserve anonymous inlined composition roots
miguel-heygen Apr 27, 2026
613f977
test: add preview regression gate
miguel-heygen Apr 27, 2026
b0f2c81
Merge pull request #519 from yusoufu/feat/transparent-video-export
miguel-heygen Apr 27, 2026
31afb4c
Merge pull request #518 from heygen-com/fix/studio-preview-runtime-vi…
miguel-heygen Apr 27, 2026
745b877
chore(deps): pin dependencies
renovate[bot] Apr 27, 2026
70e0b8b
feat(skills): remotion-to-hyperframes eval harness (2/7)
jrusso1020 Apr 27, 2026
9ff46d7
feat(skills): remotion-to-hyperframes corpus T1+T2 (3/7)
jrusso1020 Apr 27, 2026
efa7164
feat(skills): remotion-to-hyperframes corpus T3 (4/7)
jrusso1020 Apr 27, 2026
7509916
feat(skills): remotion-to-hyperframes corpus T4 (5/7)
jrusso1020 Apr 27, 2026
890f305
feat(skills): remotion-to-hyperframes references (6/7)
jrusso1020 Apr 27, 2026
b7769b2
feat(skills): remotion-to-hyperframes SKILL.md + orchestrator (7/7)
jrusso1020 Apr 27, 2026
8918ba7
docs: add Video Editor Cheatsheet guide
miguel-heygen Apr 28, 2026
37827cd
chore: release v0.4.32
miguel-heygen Apr 28, 2026
87fe549
Merge pull request #524 from heygen-com/docs/video-editor-cheatsheet
miguel-heygen Apr 28, 2026
36b3fc8
fix: budget workers for expensive captures
miguel-heygen Apr 28, 2026
a18f66d
Merge pull request #525 from heygen-com/fix/shader-audio-worker-fallback
miguel-heygen Apr 28, 2026
3fa094c
Merge pull request #506 from heygen-com/skill/r2hf-scaffold
jrusso1020 Apr 28, 2026
b27385b
Merge pull request #507 from heygen-com/skill/r2hf-eval-harness
jrusso1020 Apr 28, 2026
4ab4576
Merge pull request #508 from heygen-com/skill/r2hf-corpus-t1-t2
jrusso1020 Apr 28, 2026
1294523
Merge pull request #509 from heygen-com/skill/r2hf-corpus-t3
jrusso1020 Apr 28, 2026
40339a6
Merge pull request #515 from heygen-com/skill/r2hf-corpus-t4
jrusso1020 Apr 28, 2026
f22d9bf
Merge pull request #516 from heygen-com/skill/r2hf-references
jrusso1020 Apr 28, 2026
d01685d
Merge pull request #517 from heygen-com/skill/r2hf-skill-body
jrusso1020 Apr 28, 2026
2d8a29e
Merge pull request #510 from heygen-com/renovate/github-actions
jrusso1020 Apr 28, 2026
4d0e262
Merge pull request #511 from heygen-com/renovate/google-genai-1.x
jrusso1020 Apr 28, 2026
8e5593b
feat(render): auto-detect HDR from media probes, add --sdr flag (#526)
vanceingalls Apr 28, 2026
9c79832
fix: validate CLI smoke paths and warn on oversized compositions
miguel-heygen Apr 28, 2026
82ce413
ci: install ffmpeg in CLI smoke job
miguel-heygen Apr 28, 2026
84d5801
ci: address CLI smoke review feedback
miguel-heygen Apr 28, 2026
46a4cac
chore: release v0.4.33
miguel-heygen Apr 28, 2026
8f97edb
fix(hdr): filter zero-opacity elements and support overflow:hidden cl…
vanceingalls Apr 28, 2026
ce4bcc4
fix(cli): use multi-strategy runtime resolver for snapshot
ukimsanov Apr 28, 2026
e14ff9b
feat(lint): warn on dense compositions
miguel-heygen Apr 28, 2026
4988b42
ci: relax CLI smoke validate timeout
miguel-heygen Apr 28, 2026
f142a63
Merge pull request #523 from heygen-com/fix/cli-validate-smoke-ci
miguel-heygen Apr 28, 2026
54cc0f1
test: cover sub-composition audio extraction
miguel-heygen Apr 28, 2026
f7de8eb
Merge pull request #539 from heygen-com/fix/subcomposition-audio-cove…
miguel-heygen Apr 28, 2026
e1d1103
Merge pull request #532 from heygen-com/fix/snapshot-runtime-multi-st…
miguel-heygen Apr 28, 2026
e568235
Merge pull request #531 from heygen-com/lint/subcomposition-guidance
miguel-heygen Apr 28, 2026
78d949b
fix(studio): keep gsap timeline clips stable
miguel-heygen Apr 28, 2026
820b07d
feat(studio): support trackpad timeline pinch zoom
miguel-heygen Apr 28, 2026
7ff1734
fix(studio): capture timeline pinch zoom
miguel-heygen Apr 28, 2026
635fca1
feat(studio): adapt timeline ruler density
miguel-heygen Apr 28, 2026
a45f900
feat: add Studio NLE playback controls
miguel-heygen Apr 28, 2026
0a542f8
Merge pull request #540 from heygen-com/fix/studio-gsap-clip-offset
miguel-heygen Apr 28, 2026
fc3c601
Merge pull request #541 from heygen-com/feat/studio-timeline-pinch-zoom
miguel-heygen Apr 28, 2026
ad44c31
perf(hdr): reduce layered composite overhead (#538)
vanceingalls Apr 28, 2026
31c4f97
chore: release v0.4.34
miguel-heygen Apr 28, 2026
be1fcfc
docs(readme): add Discord community badge
jrusso1020 Apr 28, 2026
02e8bac
Merge pull request #547 from heygen-com/docs/readme-discord-badge
jrusso1020 Apr 29, 2026
9dc17ae
fix: scope studio playback shortcuts
miguel-heygen Apr 29, 2026
5fe53a0
fix: keep caption shortcuts outside component
miguel-heygen Apr 29, 2026
47b801f
feat: add Studio NLE playback controls (#530)
miguel-heygen Apr 29, 2026
eb06526
chore: release v0.4.35
miguel-heygen Apr 29, 2026
8b234be
fix(producer): handle no-audio stream gracefully in resolveMediaDuration
miguel-heygen Apr 29, 2026
857b870
chore: release v0.4.36
miguel-heygen Apr 29, 2026
c196b76
fix: isolate duplicate sub-composition instances (#561)
miguel-heygen Apr 29, 2026
c0a74c1
feat: add vertical flowchart block (#563)
miguel-heygen Apr 29, 2026
328bba0
fix: make registry blocks pass lint errors (#564)
miguel-heygen Apr 29, 2026
403c00e
fix: warn on self-scoped composition selectors (#562)
miguel-heygen Apr 29, 2026
bcd7230
fix: fall back to screenshot mode when any CDP call times out during …
miguel-heygen Apr 29, 2026
f9d38a1
feat(core): add anime.js runtime adapter (#569)
miguel-heygen Apr 29, 2026
b9a9998
chore: release v0.4.37
miguel-heygen Apr 29, 2026
ea3b708
feat: add Studio current-frame capture (#565)
miguel-heygen Apr 29, 2026
4d05b47
feat: add Stronkter catalog blocks (#570)
miguel-heygen Apr 29, 2026
22f0e6a
feat(skills): design.md integration, shared video references, Claude …
vanceingalls Apr 30, 2026
3f6907e
fix: keep Studio frame stepping advancing (#573)
miguel-heygen Apr 30, 2026
4ab304e
chore: release v0.4.38
miguel-heygen Apr 30, 2026
395fb9c
feat: add browser GPU render mode (#571)
miguel-heygen Apr 30, 2026
39b3997
fix(studio): warn on anonymous timeline clips (#533)
miguel-heygen Apr 30, 2026
2045e21
chore: release v0.4.39
miguel-heygen Apr 30, 2026
8662598
docs: add runtime adapter skills (#572)
miguel-heygen Apr 30, 2026
6a59ef6
fix: skip metadata waits for injected video frames (#575)
miguel-heygen Apr 30, 2026
4fa2633
chore: release v0.4.40
miguel-heygen Apr 30, 2026
61bb814
feat: scaffold package scripts on init (#576)
miguel-heygen Apr 30, 2026
68bd52a
feat: add init tailwind flag (#577)
miguel-heygen Apr 30, 2026
1fb4cad
docs(remotion-skill): only trigger on explicit migration ask
jrusso1020 May 1, 2026
a68e840
docs(remotion-skill): only trigger on explicit migration ask (#581)
jrusso1020 May 1, 2026
dde26cf
feat: default streaming encode for sequential renders (#579)
miguel-heygen May 1, 2026
8b8dcf5
chore: release v0.4.41
miguel-heygen May 1, 2026
351beb9
docs: add Open Design guide alongside Claude Design (#585)
pftom May 1, 2026
15ee63c
fix: harden CLI edge-case repros (#591)
miguel-heygen May 1, 2026
cb2dd79
docs: add ADOPTERS.md
jrusso1020 May 1, 2026
ba8db27
docs: add adopters page to docs site
jrusso1020 May 1, 2026
19b6da8
Merge pull request #594 from heygen-com/docs/adopters-md
jrusso1020 May 2, 2026
04bd56a
fix: align Studio capture with preview (#595)
miguel-heygen May 2, 2026
4750a98
fix: speed up video frame injection renders (#596)
miguel-heygen May 2, 2026
2a897d3
fix: address PR #596 review issues (#597)
miguel-heygen May 2, 2026
db9cffb
chore: release v0.4.42
miguel-heygen May 2, 2026
4760afd
fix: readme (#599)
miguel-heygen May 2, 2026
c0d75a5
feat(core,cli,engine,producer): add getVariables() helper and --varia…
jrusso1020 May 3, 2026
8c8dd6a
refactor(core,cli,engine): apply /simplify findings on getVariables PR
jrusso1020 May 3, 2026
6bcf3ce
fix: use target receiver for scoped proxy accessors (#607)
miguel-heygen May 3, 2026
d2ca45e
feat(cli): add remove-background command for transparent video
jrusso1020 May 4, 2026
010c4f5
fix(cli): correct u2net_human_seg std + reject signal-killed ffmpeg e…
jrusso1020 May 4, 2026
1d15845
chore: release v0.4.43
miguel-heygen May 4, 2026
d0abe90
feat: Persist Studio manual edits via manifest (#593)
vanceingalls May 4, 2026
8d83d4f
fix: make caption overrides refresh-safe (#609)
vanceingalls May 4, 2026
26b8e2a
Revert "feat: Persist Studio manual edits via manifest (#593)"
miguel-heygen May 4, 2026
aeae676
Merge pull request #612 from heygen-com/feat/cli-remove-background
jrusso1020 May 4, 2026
03b82e6
feat(core,cli,engine,producer): getVariables() helper + --variables r…
jrusso1020 May 4, 2026
484ab54
feat(core): scope getVariables() per sub-comp instance
jrusso1020 May 3, 2026
1da6f45
refactor(core): apply /simplify findings on sub-comp scoping PR
jrusso1020 May 3, 2026
da92a17
feat(core): scope getVariables() per sub-comp instance (PR 2/4) (#601)
jrusso1020 May 4, 2026
c1b6efd
feat(core,cli): variable schema validation + lint rules
jrusso1020 May 3, 2026
09da5db
refactor(core): apply /simplify findings on validation PR
jrusso1020 May 3, 2026
1c9d726
feat(core,cli): variable schema validation + lint rules (PR 3/4) (#602)
jrusso1020 May 4, 2026
211a921
docs(skills): teach agents the variables system across SKILL.md + docs
jrusso1020 May 3, 2026
22bcd7a
docs: clarify declaration vs override attributes (PR #603 review)
jrusso1020 May 3, 2026
21243b6
docs: lead with shape contrast for variable attributes
jrusso1020 May 3, 2026
62c2589
docs(skills): document variables system in SKILL.md + docs (PR 4/4) (…
jrusso1020 May 4, 2026
58b4234
test(producer): add variables-prod regression test for the variables …
jrusso1020 May 3, 2026
c9d5fe6
refactor(producer): apply /simplify findings on variables-prod
jrusso1020 May 3, 2026
f1d408e
test(producer): add variables-prod regression for the variables stack…
jrusso1020 May 4, 2026
7affa4a
fix: handle player loop and render exit (#617)
miguel-heygen May 4, 2026
20895ee
chore: release v0.4.44
miguel-heygen May 4, 2026
051e985
refactor(skills): split asset preprocessing out of hyperframes-cli
jrusso1020 May 4, 2026
4413d25
refactor(skills): consolidate tts/whisper guidance into hyperframes-m…
jrusso1020 May 4, 2026
94dc6c8
fix(skills): purge stale tts/transcribe references from CLI skill poi…
jrusso1020 May 5, 2026
06f5422
Merge pull request #619 from heygen-com/split-cli-media-skills
jrusso1020 May 5, 2026
688052d
fix(cli): correct sharp 3-channel mask + BT.709 + quality presets in …
jrusso1020 May 5, 2026
0e54167
fix(engine): wait for first frame decode + drop B-frames so renders p…
jrusso1020 May 5, 2026
2f96d5c
fix(engine,producer): URL-clamp sub-comp src paths and warn on silent…
jrusso1020 May 5, 2026
5fca4be
docs(remove-background): document compositing patterns and pitfalls
jrusso1020 May 5, 2026
b836941
fix(engine): detect VP9 alpha tag case-insensitively in ffprobe
jrusso1020 May 5, 2026
6fb782f
test(engine): pin ALPHA_MODE uppercase ffprobe tag regression
jrusso1020 May 5, 2026
39bc374
fix(engine): default to codec-based alpha capability instead of relyi…
jrusso1020 May 5, 2026
f4ecf96
fix(engine,cli,producer): address PR #627 review feedback
jrusso1020 May 5, 2026
b8b82fa
docs(remove-background): broaden framing from avatar-specific to any …
jrusso1020 May 5, 2026
7d1d8ea
fix(producer): sample PSNR checkpoints from common duration of render…
jrusso1020 May 5, 2026
0973229
Merge pull request #627 from heygen-com/fix/sub-comp-video-path-resol…
jrusso1020 May 5, 2026
5846275
chore: release v0.4.45
jrusso1020 May 5, 2026
cd277ca
feat(catalog): add Blue Sweater intro showcase (#630)
miguel-heygen May 5, 2026
21ec5f8
fix(cli): use size-adaptive timeouts for publish uploads (#635)
miguel-heygen May 5, 2026
c2bc2aa
feat(cli): add --background-output to remove-background
jrusso1020 May 5, 2026
8700826
fix(lint): rephrase too-large composition warnings to give actionable…
May 6, 2026
c3c6034
Merge pull request #638 from heygen-com/fix/lint-warning-wording
jrusso1020 May 6, 2026
a707b6a
fix(cli): pin inverse-alpha invariants, harden encoder stdin
jrusso1020 May 6, 2026
4a06fb6
Merge pull request #637 from heygen-com/feat/remove-background-bg-output
jrusso1020 May 6, 2026
af2f727
fix(bundler): inline runtime body, drop bare-semi joins, drop empty c…
May 6, 2026
dfca302
fix(bundler): runtime mode opt-in, ASI-safe joinJsChunks, prune dead …
May 6, 2026
93ab216
test(bundler): case-insensitive script regex in ASI-guard test
jrusso1020 May 6, 2026
b075f90
test(bundler): tolerate whitespace in closing script tag
jrusso1020 May 6, 2026
f3f542b
test(bundler): accept arbitrary content in script close tag
jrusso1020 May 6, 2026
3d370c4
test(bundler): parse scripts via linkedom, not regex
jrusso1020 May 6, 2026
ea90bbe
fix(runtime): clear play guard after hard seek to prevent audio desyn…
miguel-heygen May 6, 2026
64457d9
Merge pull request #641 from heygen-com/fix/bundler-runtime-and-joins
jrusso1020 May 6, 2026
a7b308b
feat: cache shader transition preview frames (#634)
vanceingalls May 6, 2026
b0fb664
fix: render shader transitions for SDR compositions (#640)
vanceingalls May 6, 2026
e45c91c
feat(skills): sync upstream PR #549 design.md architecture into hyper…
May 6, 2026
3236a19
chore: merge upstream/main into worktree (96 commits, 386 files)
May 6, 2026
37e7a5a
feat(studio-polish): harden HOOK_BIGTEXT, add chromatic-glow atmosphe…
May 6, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "hyperframes",
"description": "HyperFrames by HeyGen. Write HTML, render video. Compositions, GSAP animations, captions, voiceovers, audio-reactive visuals, and website-to-video capture for HyperFrames.",
"description": "HyperFrames by HeyGen. Write HTML, render video. Compositions, GSAP and runtime adapter animations, captions, voiceovers, audio-reactive visuals, and website-to-video capture for HyperFrames.",
"version": "0.1.0",
"author": {
"name": "HeyGen",
Expand Down
9 changes: 7 additions & 2 deletions .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "hyperframes",
"version": "0.1.0",
"description": "Write HTML, render video. Compositions, GSAP animations, captions, voiceovers, audio-reactive visuals, and website-to-video capture for HyperFrames.",
"description": "Write HTML, render video. Compositions, Tailwind v4 styles, GSAP and runtime adapter animations, captions, voiceovers, audio-reactive visuals, and website-to-video capture for HyperFrames.",
"author": {
"name": "HeyGen",
"email": "hyperframes@heygen.com",
Expand All @@ -14,7 +14,12 @@
"hyperframes",
"video",
"html",
"tailwind",
"gsap",
"lottie",
"three",
"waapi",
"animejs",
"animation",
"composition",
"rendering",
Expand All @@ -26,7 +31,7 @@
"interface": {
"displayName": "HyperFrames by HeyGen",
"shortDescription": "Write HTML, render video",
"longDescription": "Build videos from HTML with HyperFrames. Author compositions with HTML + CSS + GSAP, use the CLI for init/preview/render/transcribe/tts, install reusable registry blocks and components, follow the GSAP animation reference, and turn any website into a video with the 7-step capture-to-video pipeline.",
"longDescription": "Build videos from HTML with HyperFrames. Author compositions with HTML, CSS, Tailwind v4 browser-runtime styles, GSAP, Anime.js, Lottie, Three.js, and WAAPI adapter patterns, use the CLI for the dev loop (init/preview/render), preprocess assets (tts/transcribe/remove-background) for compositions, install reusable registry blocks and components, and turn any website into a video with the 7-step capture-to-video pipeline.",
"developerName": "HeyGen",
"category": "Design",
"capabilities": ["Read", "Write"],
Expand Down
7 changes: 6 additions & 1 deletion .cursor-plugin/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"name": "hyperframes",
"displayName": "HyperFrames by HeyGen",
"version": "0.1.0",
"description": "Write HTML, render video. Compositions, GSAP animations, captions, voiceovers, audio-reactive visuals, and website-to-video capture for HyperFrames.",
"description": "Write HTML, render video. Compositions, Tailwind v4 styles, GSAP and runtime adapter animations, captions, voiceovers, audio-reactive visuals, and website-to-video capture for HyperFrames.",
"author": {
"name": "HeyGen",
"email": "hyperframes@heygen.com"
Expand All @@ -18,7 +18,12 @@
"hyperframes",
"video",
"html",
"tailwind",
"gsap",
"lottie",
"three",
"waapi",
"animejs",
"animation",
"composition",
"rendering",
Expand Down
16 changes: 7 additions & 9 deletions .github/workflows/catalog-previews.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ on:
- "registry/blocks/**"
- "registry/components/**"
- "scripts/generate-catalog-previews.ts"
- ".github/workflows/catalog-previews.yml"

concurrency:
group: catalog-previews-${{ github.ref }}
Expand All @@ -18,13 +19,13 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
fetch-depth: 0

- uses: oven-sh/setup-bun@v2
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2

- uses: actions/setup-node@v4
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 22

Expand All @@ -33,18 +34,15 @@ jobs:
- run: bun run build

# Chrome headless shell for rendering
- uses: browser-actions/setup-chrome@v1
- uses: browser-actions/setup-chrome@c785b87e244131f27c9f19c1a33e2ead956ab7ce # v1
with:
chrome-version: stable

# FFmpeg for video encoding
- uses: FedericoCarboni/setup-ffmpeg@v3

- name: Render changed block/component previews
run: |
# Find which blocks/components changed in this PR
BASE_SHA=${{ github.event.pull_request.base.sha }}
CHANGED_ITEMS=$(git diff --name-only "$BASE_SHA"...HEAD -- registry/blocks/ registry/components/ \
CHANGED_ITEMS=$(git diff --name-only --diff-filter=ACMR "$BASE_SHA"...HEAD -- registry/blocks/ registry/components/ \
| grep -E '^registry/(blocks|components)/' \
| sed 's|^registry/[^/]*/\([^/]*\)/.*|\1|' \
| sort -u)
Expand Down Expand Up @@ -72,7 +70,7 @@ jobs:

- name: Upload preview artifacts
if: always()
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: catalog-previews
path: docs/images/catalog/
Expand Down
145 changes: 121 additions & 24 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,10 @@ jobs:
# Force git-based change detection instead of the pull_request REST API.
# The API path can fail the whole workflow on transient listFiles
# timeouts before any real CI work starts.
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
fetch-depth: 0
- uses: dorny/paths-filter@v4
- uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4
id: filter
with:
token: ""
Expand All @@ -51,11 +51,11 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
lfs: true
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 22
- run: bun install --frozen-lockfile
Expand All @@ -68,11 +68,11 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
lfs: true
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 22
- run: bun install --frozen-lockfile
Expand All @@ -83,11 +83,11 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
lfs: true
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 22
- run: bun install --frozen-lockfile
Expand All @@ -100,11 +100,11 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
lfs: true
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 22
- run: bun install --frozen-lockfile
Expand All @@ -118,11 +118,11 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
lfs: true
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 22
- run: bun install --frozen-lockfile
Expand All @@ -136,11 +136,11 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
lfs: true
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 22
- run: bun install --frozen-lockfile
Expand All @@ -153,11 +153,11 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
lfs: true
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
- uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 22
- run: bun install --frozen-lockfile
Expand Down Expand Up @@ -217,13 +217,110 @@ jobs:

echo "PASS: global install smoke test succeeded"

cli-smoke-required:
name: "CLI smoke (required)"
needs: changes
if: needs.changes.outputs.code == 'true'
runs-on: ubuntu-latest
timeout-minutes: 25
steps:
- uses: actions/checkout@v4
with:
lfs: true
- uses: oven-sh/setup-bun@v2
- uses: actions/setup-node@v4
with:
node-version: 22
- name: Install FFmpeg
run: |
sudo apt-get update
sudo apt-get install -y ffmpeg
- name: Install dependencies
run: bun install --frozen-lockfile
- name: Build monorepo
run: bun run build

- name: Create smoke input video
run: |
set -euo pipefail
ffmpeg -hide_banner -loglevel error \
-f lavfi -i testsrc2=size=640x360:rate=30 \
-f lavfi -i sine=frequency=880:sample_rate=48000 \
-t 3 \
-c:v libx264 \
-pix_fmt yuv420p \
-c:a aac \
-shortest \
-y /tmp/hf-cli-input.mp4
test -s /tmp/hf-cli-input.mp4

- name: Smoke-test CLI from monorepo source
run: |
set -euo pipefail
rm -rf /tmp/hf-cli-inside

bun run --filter @hyperframes/cli dev -- init /tmp/hf-cli-inside \
--example warm-grain \
--video /tmp/hf-cli-input.mp4 \
--skip-transcribe \
--non-interactive \
--skip-skills

bun run --filter @hyperframes/cli dev -- lint /tmp/hf-cli-inside
bun run --filter @hyperframes/cli dev -- validate /tmp/hf-cli-inside --timeout 3000
bun run --filter @hyperframes/cli dev -- render /tmp/hf-cli-inside \
--quality standard \
--workers auto \
--strict \
--output /tmp/hf-cli-inside/renders/inside.mp4

test -s /tmp/hf-cli-inside/renders/inside.mp4

- name: Pack CLI tarball
run: |
set -euo pipefail
mkdir -p /tmp/hf-cli-pack
cd packages/cli
PACKED_TARBALL="$(npm pack --pack-destination /tmp/hf-cli-pack | tail -n 1)"
test -n "$PACKED_TARBALL"
test -f "/tmp/hf-cli-pack/$PACKED_TARBALL"
echo "HF_CLI_TARBALL=/tmp/hf-cli-pack/$PACKED_TARBALL" >> "$GITHUB_ENV"

- name: Install packed CLI outside monorepo
run: |
set -euo pipefail
npm install -g --prefix /tmp/hf-cli-global "$HF_CLI_TARBALL"

- name: Smoke-test packed CLI outside monorepo
run: |
set -euo pipefail
export PATH="/tmp/hf-cli-global/bin:$PATH"
rm -rf /tmp/hf-cli-outside

hyperframes init /tmp/hf-cli-outside \
--example warm-grain \
--video /tmp/hf-cli-input.mp4 \
--skip-transcribe \
--non-interactive \
--skip-skills

hyperframes lint /tmp/hf-cli-outside
hyperframes validate /tmp/hf-cli-outside --timeout 3000
hyperframes render /tmp/hf-cli-outside \
--quality standard \
--workers auto \
--strict \
--output /tmp/hf-cli-outside/renders/outside.mp4

test -s /tmp/hf-cli-outside/renders/outside.mp4

semantic-pr-title:
name: Semantic PR title
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: amannn/action-semantic-pull-request@v5
- uses: amannn/action-semantic-pull-request@e32d7e603df1aa1ba07e981f2a23455dee596825 # v5
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ jobs:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- uses: actions/checkout@v4
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4

- uses: actions/setup-node@v4
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
node-version: 22

Expand Down
Loading
Loading