feat(core): add compiler entry point and runtime composition fixes#3
Closed
miguel-heygen wants to merge 1 commit intoinitial-code-portfrom
Closed
feat(core): add compiler entry point and runtime composition fixes#3miguel-heygen wants to merge 1 commit intoinitial-code-portfrom
miguel-heygen wants to merge 1 commit intoinitial-code-portfrom
Conversation
Add @hyperframes/core/compiler — shared HTML bundler for studio and CLI. - bundleToSingleHtml(): runtime injection + sub-composition inlining - compileHtml(): timing compilation with optional ffprobe - validateHyperframeHtmlContract(): static guard - Path traversal protection via safePath() on all resolve calls Runtime fixes for composition rendering: - childrenBound flag prevents premature timeline skip - Visibility adapter skips sub-composition elements - Deferred rebinding for inlined compositions - className fallback for timeline clip labels
46caf94 to
eb11071
Compare
miguel-heygen
added a commit
that referenced
this pull request
Mar 27, 2026
…ns (#42) ## Changes - Add optional `entryFile` parameter to render API endpoints (`/v1/render` and `/v1/render-stream`) - Enable rendering individual sub-compositions by extracting them from index.html context when the entry file is a `<template>` wrapper - Change base64 audio/video linting from detecting "fabricated" media to prohibiting all inline base64 media - Add manifest path resolution for bundled producer deployments ## API Changes - `RenderConfig` — new optional `entryFile` field for specifying HTML file to render - `server.ts` — parses `entryFile` from request body, validates file exists in project directory - `executeRenderJob` — uses `entryFile` instead of hardcoded `"index.html"` ## Template Extraction - `extractStandaloneEntryFromIndex` — extracts sub-composition hosts from index.html and creates standalone render context - Handles `<template>` entry files by finding matching `data-composition-src` in index.html and isolating that host - Resets `data-start` to 0 for standalone rendering ## Linting Updates - Change rule #3.7 from detecting "fabricated" base64 media to prohibiting all inline base64 audio/video - Lower detection threshold from 100+ to 20+ base64 characters - All base64 media now triggers error severity with clearer messaging about file size bloat ## Usage ```json POST /v1/render-stream { "projectDir": "/path/to/project", "entryFile": "compositions/intro.html" } ``` Omit `entryFile` for default behavior (renders `index.html`).
6 tasks
This was referenced Apr 7, 2026
miguel-heygen
added a commit
that referenced
this pull request
Apr 7, 2026
## Summary Adds critical rendering constraints to the `hyperframes` skill discovered from eval analysis of 27 agent-generated compositions. These guardrails prevent agents from producing compositions that technically work but render poorly. ## What it fixes | Rule Added | Eval Prompts Affected | Issue | | --- | --- | --- | | Ban `repeat: -1` | #20 loading-spinner (2.0/5) | Infinite timeline broke capture engine | | Ban async timeline construction | #16 particle-logo (2.6/5) | Timeline empty at capture time | | Min font size 16px (labels), 20px (body) | #7, #8, #13, #14, #15, #19 | Illegible text after encoding | | Ban full-screen dark linear gradients | #3, #5, #10, #14 | H.264 color banding | | `<link>` fonts over CSS `@import` | #7, #24 | Font loading race conditions | ## Changes - **Rules section**: Added `repeat: -1` ban, async timeline ban, items 8-9 to "Never do" list - **Typography section**: Expanded font size guidance with specific minimums per text role (headlines, body, labels) - **New "Backgrounds and Color" section**: Guidance on avoiding gradient banding - **Output Checklist**: 5 new items covering all new constraints ## Test plan - [ ] Run eval with updated skill and compare avg quality scores - [x] Skill renders correctly in `/hyperframes` invocation
jrusso1020
added a commit
that referenced
this pull request
Apr 7, 2026
Add aq-mode=3 (auto-variance adaptive quantization) to CPU H.264/H.265 encoding. This redistributes bits from bright/textured areas to dark flat areas where color banding is most visible in 8-bit yuv420p output. - standard/high presets: aq-mode=3 + aq-strength=0.8 + deblock=1,1 - draft (ultrafast): aq-mode=3 only (deblock too slow for ultrafast) - GPU and VP9 encoders unaffected (have their own AQ implementations) Adds 6 regression tests verifying the params are emitted correctly. Fixes color banding on dark gradients (eval issue #3, prompts 3,5,10,14). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
jrusso1020
added a commit
that referenced
this pull request
Apr 7, 2026
Add aq-mode=3 (auto-variance adaptive quantization) to CPU H.264/H.265 encoding. This redistributes bits from bright/textured areas to dark flat areas where color banding is most visible in 8-bit yuv420p output. - standard/high presets: aq-mode=3 + aq-strength=0.8 + deblock=1,1 - draft (ultrafast): aq-mode=3 only (deblock too slow for ultrafast) - GPU and VP9 encoders unaffected (have their own AQ implementations) Adds 6 regression tests verifying the params are emitted correctly. Fixes color banding on dark gradients (eval issue #3, prompts 3,5,10,14). Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
miguel-heygen
added a commit
that referenced
this pull request
Apr 10, 2026
## Summary - Bump `@chenglou/pretext` ^0.0.3 → ^0.0.5 in `packages/core` — fixes **high-severity** algorithmic complexity DoS ([Dependabot #3](https://github.com/heygen-com/hyperframes/security/dependabot/3)) - Bump `vite` ^5.0.0 → ^6.4.2 in `packages/studio` — fixes **medium-severity** path traversal in optimized deps `.map` handling ([Dependabot #2](https://github.com/heygen-com/hyperframes/security/dependabot/2)) ## Test plan - [x] `pnpm --filter @hyperframes/core build` — passes - [x] `pnpm --filter @hyperframes/studio build` — passes (vite 6.4.2, 4631 modules, 3.85s) - [x] `@vitejs/plugin-react@^4.0.0` supports vite 6 (`peerDependencies: vite ^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0`)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
@hyperframes/core/compiler— shared HTML bundler for studio and CLIbundleToSingleHtml(): runtime injection + sub-composition inliningcompileHtml(): timing compilation with optional ffprobevalidateHyperframeHtmlContract(): static guardsafePath()on all resolve callschildrenBoundflag, visibility adapter skip, deferred rebindingclassNamefallback for timeline clip labelsTest plan
pnpm --filter @hyperframes/core buildsucceedspnpm --filter @hyperframes/core testpasses