Commit Graph
1194 Commits
Author SHA1 Message Date
Ular Kimsanov 5472d9eac0 docs: the docs in hyperframes.dev's and the Studio app's colours (#6393)
* docs: the docs in hyperframes.dev's and the Studio app's colours

Light mode takes hyperframes.dev's look: a still of its beige light
ground, a frosted header, its ink, black pill buttons, heavy TT Norms
headlines and a light-weight description. Every other colour comes from
the Studio app: Mintlify's gray scale on the app's warm hue, article
text and catalog greys on the same tokens, and code in the browser
editor's own syntax colours. Dark mode is the app's Night palette.

* docs: code in the browser editor's colours on the hosted build too

Mintlify's hosted build ignores a custom code theme (the preview kept
GitHub's colours), so the code-theme setting goes and each colour of the
default themes (GitHub light, VS Code dark) is mapped by role to the
browser editor's colour for that role. Code blocks and the fade under the
copy button use the code token in both modes.

* docs: map the dark control keywords to the editor keyword colour
2026-10-26 06:40:08 +00:00
Ular Kimsanov 0390f3f908 docs(studio): the browser editor in six pages, named the browser editor (#6379)
* docs(studio): the browser editor in six pages, named the browser editor

* docs(studio): mute where the editor has it, and no solo control

The audio pages still described a solo control and a group-row mute that
the editor does not render. Muting is the speaker button on an audio
track (Mute track / Unmute track), the same toggle on a selected clip,
and the Muted switch; a group is silenced through its members' tracks.
The audio reference drops its solo section for the same reason.
2026-10-26 06:24:53 +00:00
Xuanru Li afdad4ea38 feat(cli): opt-in check flag that leaves out contrast measured mid-animation (#6396)
* feat(cli): opt-in check flag that leaves out contrast measured mid-animation

`hyperframes check --skip-contrast-in-motion`, or
HYPERFRAMES_CHECK_SKIP_CONTRAST_IN_MOTION=1, leaves out a contrast failure
measured while a GSAP tween on the text or an ancestor is running, or while
the text's cumulative opacity is below 1. Repeating tweens and tweens of 4 s
or longer (camera drifts) do not count as motion. Text no GSAP tween targets
is reported as before. With neither set, check is unchanged.

The motion state is read at the same contrast sample, with no extra seek or
screenshot.

* fix(cli): read contrast motion on current GSAP clocks

* fix(cli): keep infinite timeline motion ambient
2026-10-26 06:22:46 +00:00
Miguel Ángel a11280eef0 perf(cli): lambda deploy warms the video function so the first render does not wait for its image (#6376)
* perf(cli): lambda deploy warms the video function so the first render does not wait for its image

A freshly deployed container-image function loads its image on first use, which added about 12 s to the first render's plan on some deploys. Deploy now invokes the function's warm action once after the stack is up (default on, --no-warm skips it). A failed warm-up prints a warning and the deploy still succeeds.

* chore(cli): move the deploy warm-up to its own file, regenerate the skills manifest

Regenerates skills-manifest.json for the lambda reference change, keeps runDeploy under the complexity gate by pulling the warm step into a helper, and leaves sam.ts untouched.

* fix(cli): the deploy warm-up asks the aws CLI for JSON output whatever the profile sets

A profile configured for text or yaml output made the reply unparseable, which printed a spurious warm-up warning.

* refactor(cli): split the reserved-concurrency notice and warm-up gate out of runDeploy
2026-10-26 05:32:53 +00:00
Ular Kimsanov 12030b0ee8 docs(prompting): the Prompt Guide as six topic pages (#6378)
* docs(prompting): the Prompt Guide as six topic pages

* docs(prompting): call the skill the way each agent does

The overview told every own-agent user to start with /hyperframes; Codex
uses $hyperframes, and other agents have their own way. The line now
names both and keeps the caveat the old page had.
2026-10-26 05:11:17 +00:00
Miguel Ángel 3ff8cd8683 chore: release v0.8.201 (#6377) 2026-10-26 04:50:26 +00:00
Ular Kimsanov a4e6bc3254 docs(guides): media pages titled by the task people search for (#6360)
* docs(guides): media pages titled by the task people search for

* docs(guides): background fixes as a visible section; list color grading as an agreed deletion
2026-10-26 01:45:25 +00:00
James RussoandClaude Opus 5.5 f4a48ad3e0 fix(cli): make snapshot --describe opt-in (#6368)
snapshot uploaded every frame to Gemini whenever GEMINI_API_KEY or
GOOGLE_API_KEY was set, even with no flag. Frames now stay local unless
--describe is passed. A bare --describe uses the default prompt (it used
to send an empty one), --describe "question" asks a custom one, and
--describe false still works.

Fixes #6138

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-26 01:06:29 +00:00
Ular Kimsanov 5353171155 docs(guides): one page per kind of video, with its prompts folded in (#6359)
* docs(guides): one page per kind of video, with its prompts folded in

* docs(guides): two tiles per row on What to make; list the folded prompt pages as agreed deletions
2026-10-25 23:54:11 +00:00
Abdullah M. Nazif 3c016f6280 fix(core): preserve composition startup error stacks (#6353) 2026-10-25 23:26:10 +00:00
Miguel Ángel e003815c30 feat(lint): flag CSS rules that select on the inline style attribute (#6261)
* feat(lint): flag CSS rules that select on the inline style attribute

* docs(lint): keep the new and corrected rule entries to short lines
2026-10-25 23:06:38 +00:00
Abdullah M. Nazif 693447f670 fix(engine): keep capture diagnostics on stderr (#5304)
* fix(engine): keep capture diagnostics on stderr

* chore: prepare conflict resolution against current main

* chore: preserve reviewed fix on current main

* fix(engine): send motion blur diagnostics to stderr

* chore: prepare reviewed capture conflict resolution

* fix(engine): preserve stderr diagnostics across capture updates

* chore: prepare reviewed capture conflict resolution

* fix(engine): preserve stderr for scene callback warnings
2026-10-25 23:04:09 +00:00
Akshar Patel 64c7bbf25d fix(sdk): restore saved edits for dotted element IDs (#6287)
* fix(sdk): restore saved edits for dotted element IDs

* fix(sdk): skip unknown saved override values
2026-10-25 23:01:41 +00:00
Akshar Patel 04df17cccb fix(sdk): keep font and image declarations after object edits (#6281)
* fix(sdk): preserve font and image declarations after object edits

* fix(studio): preserve variable object defaults when editing declarations

* fix(studio): show font and image values in bind warnings
2026-10-25 23:01:32 +00:00
Akshar Patel 6a20ec9e9a fix(cli): preserve clip lengths when duplicating media (#6280)
* fix(cli): prevent overlaps when duplicating natural-duration media

* fix(cli): preserve absolute ends when duplicating clips

* fix(cli): keep rippled clip bounds together
2026-10-25 23:01:27 +00:00
Abdullah M. Nazif fc625ac971 docs(aws-lambda): explain long-video planning limits (#5263)
* docs(aws-lambda): explain long-video planning limits

* docs(aws-lambda): prepare planning guidance for main update

* docs(aws-lambda): align planning limits with chunk extraction

* chore: prepare conflict resolution against current main

* docs(aws-lambda): align long-video planning guidance with current extraction limits

* docs(aws-lambda): identify the timeout example construct
2026-10-25 22:58:43 +00:00
Abdullah M. Nazif 707c150cbd fix(cli): include external srcset images in project archives (#6335) 2026-10-25 22:55:35 +00:00
Abdullah M. Nazif abb06b47b7 fix(engine): verify WebGPU device creation before capture (#6343) 2026-10-25 22:54:30 +00:00
Ular Kimsanov 5bb9431a98 docs(guides): pages for making videos with Claude Code, Codex and Cursor (#6352) 2026-10-25 21:46:27 +00:00
Miguel Ángel 33685ef2be fix(core): a self-closed audio group no longer hides the clips after it (#6344)
* fix(core): a self-closed audio group no longer hides the clips after it

HTML does not close a custom element on `/>`, so `<hf-audio-group id="sfx" />` takes in every
later sibling, and the runtime's inert style (`display:none`) hid them in preview, snapshot and
render. The style is now `display:contents`: an empty group still makes no box, and anything
inside one renders as written. A lint warning names the elements a group holds, and the docs and
mixing reference show the group closed.

* style(core): cut the audio group comments to the comment length limits

* fix(core): a muted audio group still hides what sits inside it

A muted bus (`data-hidden`) is hidden by an inline display:none that the bus rule outranked, so
clips inside a muted self-closed bus kept painting while their audio and video frames dropped.
2026-10-25 21:44:32 +00:00
Miguel Ángel 2c10eb0a33 chore: release v0.8.200 (#6337) 2026-10-25 20:50:21 +00:00
Miguel Ángel 42b84632a8 chore: release v0.8.199 (#6328) 2026-10-25 18:13:20 +00:00
Miguel Ángel 26e3045e3b fix(producer): --workers N is a ceiling, drawElement renders keep their single worker (#6314)
* fix(producer): --workers N is a ceiling, drawElement renders keep their single worker

* docs(producer): keep the inversion predicate's doc as short as before
2026-10-25 15:33:05 +00:00
Miguel Ángel ad6771c435 feat(lint): warn when a scene's styles sit outside its template (#6317)
A sub-composition file with a <template> is mounted from the template alone, so a <style>
in its <head> (or a stylesheet link in its body) never applies in preview, snapshot or render.
Warn on it, with the fix in the message: move it inside <template>.
2026-10-25 15:26:20 +00:00
Miguel Ángel ada9932d4e fix(cli): a long video copy reports progress, resumes in 15 s pieces and stops only when stalled (#6307)
* fix(cli): a long video copy reports progress, resumes in 15 s pieces and stops only when stalled

* perf(core): a video copy's size box follows the stage within a fifth, not a half

* docs(cli): shorten two comments to the line limit

* fix(cli): the copy heartbeat drops a finished copy; size budgets follow the stall and progress code

* chore: size budgets rise by this change's measured bytes
2026-10-25 13:53:03 +00:00
Miguel Ángel d7f323d319 chore: release v0.8.198 (#6305) 2026-10-25 12:42:50 +00:00
Ular Kimsanov f5ab7711fb docs(start): the Studio app first, the browser editor named, a showcase wall that renders (#6303) 2026-10-25 09:48:11 +00:00
Miguel Ángel f51650d8a7 chore: release v0.8.197 (#6298) 2026-10-25 09:17:12 +00:00
Miguel Ángel 2bff65b0cd feat(lint): warn when a round-capped line hidden by its dash settings can still show a dot (#6291)
* feat(lint): warn when a round-capped line hidden by its dash settings can still show a dot

* docs(lint): shorten the round-cap dash rule entry
2026-10-25 07:25:17 +00:00
Miguel Ángel 45167743a6 chore: release v0.8.196 (#6288) 2026-10-25 06:52:05 +00:00
Akshar Patel 32d2d3cba0 fix(core): keep cache-busted images visible in bundles (#6264) 2026-10-25 04:15:02 +00:00
Akshar Patel c6c8d81ba3 fix(cli): include encoded external assets in archives (#6266) 2026-10-25 03:45:43 +00:00
Abdullah M. Nazif f5e15b2f77 fix(cli): remove stale briefs when re-freezing recipes (#5324)
* fix(cli): remove stale briefs when re-freezing recipes

* chore: prepare conflict resolution against current main

* chore: preserve reviewed fix on current main

* chore: prepare conflict resolution against current main

* fix(cli): retain recipe brief cleanup with safe directory copies

* chore: prepare conflict resolution against current main

* chore: merge main and refresh recipe skill manifest
2026-10-25 03:45:23 +00:00
Miguel Ángel 1776b42736 chore: release v0.8.195 (#6273) 2026-10-25 03:18:09 +00:00
James RussoandClaude Opus 5.5 7f19f2335a feat(studio): load GSAP from the CLI's bundled copy by default (#6256)
* feat(studio): load GSAP from the CLI's bundled copy by default

Studio preview now loads the GSAP, CustomEase and MotionPathPlugin scripts
it adds from files the CLI ships and serves same-origin at /api/vendor/npm,
instead of jsDelivr. HYPERFRAMES_GSAP_BASE_URL still wins when set, and a
composition on another GSAP version gets its plugin from jsDelivr.

Renders now honor HYPERFRAMES_GSAP_BASE_URL when they replace a missing
local GSAP script, and the setting accepts plain http only for loopback
hosts.

Closes #6205

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* refactor(studio): keep comment share flat for the GSAP local root

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(cli): find the installed gsap with node resolution when run from source

The Windows CI lane installs with the hoisted linker, so gsap is not under
packages/core/node_modules there.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(producer): load a nested composition's missing GSAP from the mirror

A sub-composition's missing local gsap/dist script was hoisted into the
render unchanged, so HYPERFRAMES_GSAP_BASE_URL (and the jsDelivr fallback)
only reached the entry document. Run the same rewrite on every
sub-composition before it is compiled, resolving its path the way the
inliner will hoist it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-25 03:08:42 +00:00
Akshar Patel e2129c3915 fix(lint): allow scoped descendant zoom (#6254)
* fix(lint): allow scoped descendant zoom

* chore(lint): account for scoped zoom bundle size

* fix(lint): retain canvas zoom guard for runtime identity

* fix(lint): preserve runtime identity in selector functions

* fix(lint): retain identity across uncertain selector branches
2026-10-25 01:53:04 +00:00
Akshar Patel d44f67ac1d fix(core): preserve repeated stylesheet imports (#6250)
* fix(core): preserve repeated stylesheet imports

* docs(core): note repeated import bundle growth
2026-10-25 01:53:03 +00:00
Miguel Ángel 2e397dba59 chore: release v0.8.194 (#6269) 2026-10-24 22:17:19 -04:00
Abdullah M. Nazif e7169ae85b fix(cli): scope explicit preview port discovery (#6242)
* fix(cli): scope explicit preview port discovery

* fix(cli): scope preview lifecycle discovery

* fix(cli): report the selected preview and its owned log
2026-10-25 01:53:01 +00:00
Akshar Patel 5b752168c1 fix(parsers): keep each keyframe array on its own timing (#6240) 2026-10-25 01:26:22 +00:00
Akshar Patel 6e77d783c7 fix(core): scene shots keep their shell after leading comments (#6239) 2026-10-25 00:29:36 +00:00
Akshar Patel 17332cf0df fix(engine): concat resolves relative paths without dropping clips (#6238)
* fix(engine): concat resolves relative paths without dropping clips

* test(engine): terminate ffprobe options in concat regression
2026-10-25 00:29:23 +00:00
Akshar Patel 680f5d7465 fix(player): keep Next available for the final slide's reveals (#6233) 2026-10-25 00:29:08 +00:00
Akshar Patel 31e6ed2aed fix(sdk): keep added elements when reopening saved overrides (#6231)
* fix(sdk): keep added elements when reopening saved overrides

* fix(sdk): replay saved overrides in latest edit order

* fix(sdk): preserve saved positions after sibling edits

* test(sdk): cover child edits after base parent restoration
2026-10-25 00:28:49 +00:00
Akshar Patel 6a917780f5 fix(cli): emit valid JSON for filtered keyframes (#6228) 2026-10-25 00:28:42 +00:00
Akshar Patel f21c3e3e7e fix(lint): accept GLSL script blocks without JavaScript syntax errors (#6227) 2026-10-25 00:28:34 +00:00
Abdullah M. Nazif 0c3387b8be fix(producer): report unavailable frame checks in debug logs (#6200)
* fix(producer): report unavailable frame checks in debug logs

* chore: prepare conflict resolution against current main

* fix(producer): retain scoped diagnostics with current artifact handling
2026-10-25 00:28:25 +00:00
Akshar Patel 035a5c0ae1 fix(lint): accept final font-family descriptors without semicolons (#6085) 2026-10-25 00:27:51 +00:00
Akshar Patel 066bc51831 fix(producer): keep runtime media speed in exports (#5528)
* fix(producer): preserve runtime media playback rates

* fix(producer): preserve runtime-inserted speed ramps

* fix(producer): retain scene trims for discovered speed ramps
2026-10-25 00:25:04 +00:00
Abdullah M. Nazif 0289d96ac7 docs: protect skill edits during contributor setup (#5346)
* docs: protect skill edits during contributor setup

* docs: keep skill picker guidance beside its command

* chore: prepare conflict resolution against current main

* docs: preserve checkout skill installation guidance
2026-10-25 00:24:05 +00:00