Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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 .claude-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "hyperframes",
"description": "HyperFrames by HeyGen. Write HTML, render video. Compositions, GSAP and runtime adapter animations, captions, voiceovers, audio-reactive visuals, and website capture for HyperFrames.",
"version": "0.7.85",
"version": "0.7.86",
"author": {
"name": "HeyGen",
"email": "hyperframes@heygen.com",
Expand Down
2 changes: 1 addition & 1 deletion .codex-plugin/plugin.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "hyperframes",
"description": "Write HTML, render video. Compositions, Tailwind v4 styles, GSAP and runtime adapter animations, captions, voiceovers, audio-reactive visuals, and website capture for HyperFrames.",
"version": "0.7.85",
"version": "0.7.86",
"author": {
"name": "HeyGen",
"email": "hyperframes@heygen.com",
Expand Down
2 changes: 1 addition & 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",
"description": "Write HTML, render video. Compositions, Tailwind v4 styles, GSAP and runtime adapter animations, captions, voiceovers, audio-reactive visuals, and website capture for HyperFrames.",
"version": "0.7.85",
"version": "0.7.86",
"author": {
"name": "HeyGen",
"email": "hyperframes@heygen.com"
Expand Down
27 changes: 27 additions & 0 deletions docs/changelog.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,33 @@ Recent HyperFrames releases, including user-facing features, fixes, and migratio

{/* New release entries are prepended by `bun run changelog:draft <version> --write`. */}

<Update
label="HyperFrames v0.7.86"
description="Released - 2026-07-30"
tags={["Release", "Studio", "Engine", "Contributing"]}
>
Hardens media probing against malformed frame rates, option-like file paths, and
out-of-order PNG color metadata, while keeping Studio timeline latency telemetry
non-negative. Contributor documentation now points to the correct Studio
development port.

## Fixes

- **Studio:** Prevent negative timeline latency telemetry ([b813b1734](https://github.com/heygen-com/hyperframes/commit/b813b17345531874a00b3c755f60ee6f42849fee), [#2905](https://github.com/heygen-com/hyperframes/pull/2905))
- **Engine:** Harden ffprobe parsing and command arguments ([f75ca076b](https://github.com/heygen-com/hyperframes/commit/f75ca076b790d38e518af892b67a9ea42cca3dd5), [#2740](https://github.com/heygen-com/hyperframes/pull/2740))

## Docs & Examples

- **Studio:** Document monorepo dev server port ([a52dd9c30](https://github.com/heygen-com/hyperframes/commit/a52dd9c3087c63a5c2c7f38d480961794d8c5eae), [#2902](https://github.com/heygen-com/hyperframes/pull/2902))
- **Contributing:** Fix studio dev server port in setup guide ([ffe5e12cf](https://github.com/heygen-com/hyperframes/commit/ffe5e12cf8f404b86e019d28ca25dc75de903d57), [#2901](https://github.com/heygen-com/hyperframes/pull/2901))

## Internal

- **Pr To Video:** Pin the code-vocabulary section of the frame packet ([7b3d3db8a](https://github.com/heygen-com/hyperframes/commit/7b3d3db8adbfb7e04663d7373b9fd62c71321e6c), [#2900](https://github.com/heygen-com/hyperframes/pull/2900))

[View the full commit range](https://github.com/heygen-com/hyperframes/compare/v0.7.85...v0.7.86).
</Update>

<Update
label="HyperFrames v0.7.85"
description="Released - 2026-07-30"
Expand Down
2 changes: 1 addition & 1 deletion packages/aws-lambda/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@hyperframes/aws-lambda",
"version": "0.7.85",
"version": "0.7.86",
"description": "AWS Lambda adapter for HyperFrames distributed rendering — handler, client-side SDK, and CDK construct.",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/cli/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@hyperframes/cli",
"version": "0.7.85",
"version": "0.7.86",
"description": "HyperFrames CLI — create, preview, and render HTML video compositions",
"license": "Apache-2.0",
"repository": {
Expand Down
2 changes: 1 addition & 1 deletion packages/core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@hyperframes/core",
"version": "0.7.85",
"version": "0.7.86",
"description": "",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/engine/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@hyperframes/engine",
"version": "0.7.85",
"version": "0.7.86",
"description": "Seekable web page to video rendering engine (Puppeteer + FFmpeg)",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/gcp-cloud-run/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@hyperframes/gcp-cloud-run",
"version": "0.7.85",
"version": "0.7.86",
"description": "Google Cloud Run + Workflows adapter for HyperFrames distributed rendering — request handler, client-side SDK, and Terraform module.",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/lint/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@hyperframes/lint",
"version": "0.7.85",
"version": "0.7.86",
"repository": {
"type": "git",
"url": "https://github.com/heygen-com/hyperframes",
Expand Down
2 changes: 1 addition & 1 deletion packages/parsers/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@hyperframes/parsers",
"version": "0.7.85",
"version": "0.7.86",
"repository": {
"type": "git",
"url": "https://github.com/heygen-com/hyperframes",
Expand Down
2 changes: 1 addition & 1 deletion packages/player/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@hyperframes/player",
"version": "0.7.85",
"version": "0.7.86",
"description": "Embeddable web component for HyperFrames compositions",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/producer/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@hyperframes/producer",
"version": "0.7.85",
"version": "0.7.86",
"description": "HTML-to-video rendering engine using Chrome's BeginFrame API",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/sdk/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@hyperframes/sdk",
"version": "0.7.85",
"version": "0.7.86",
"description": "Headless, framework-neutral HyperFrames composition editing engine",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/shader-transitions/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@hyperframes/shader-transitions",
"version": "0.7.85",
"version": "0.7.86",
"description": "WebGL shader transitions for HyperFrames compositions",
"repository": {
"type": "git",
Expand Down
2 changes: 1 addition & 1 deletion packages/studio-server/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@hyperframes/studio-server",
"version": "0.7.85",
"version": "0.7.86",
"repository": {
"type": "git",
"url": "https://github.com/heygen-com/hyperframes",
Expand Down
29 changes: 26 additions & 3 deletions packages/studio-server/src/helpers/manualEditsRenderScript.ts
Original file line number Diff line number Diff line change
Expand Up @@ -659,6 +659,25 @@ function studioManualEditsRenderRuntime(
}
return applied;
};
// `applyManifest` is redefined on every re-run of this script (each studio
// edit / soft reload injects a fresh copy of this whole runtime). Route the
// wrapped seek functions through this single mutable, window-scoped slot —
// rather than closing over `applyManifest` directly — so that if a wrapper
// installed by an EARLIER generation is still active (e.g. `isWrapped`
// below finds the current seek already marked and skips re-wrapping), it
// keeps calling the CURRENT manifest logic instead of a stale closure.
//
// This also means a stale wrapper's own closure no longer needs to retain
// that generation's `applyManifest` (and everything IT closed over —
// manifestEdits, resolveTarget, every apply* helper) for the wrapper's
// lifetime: once a newer generation overwrites this slot, the OLD
// `applyManifest` becomes collectible even if the old wrapper function
// object itself is still reachable (e.g. still wrapped-around by another
// studio seek-wrapping subsystem — see studioPositionSeekReapplyRuntime's
// installSeekTrap above, which wraps the same two functions independently).
// Confirmed via a DevTools retainer trace rooted at
// `__hfStudioManualEditsApply` during a long editing session that this
// closure chain was what stayed alive across repeated re-runs.
runtimeWindow.__hfStudioManualEditsApply = applyManifest;

const markWrapped = (fn: (time: number) => unknown): void => {
Expand Down Expand Up @@ -688,18 +707,22 @@ function studioManualEditsRenderRuntime(
if (!fn) return false;
const seek = fn as (time: number) => unknown;
if (isWrapped(seek)) {
applyManifest();
runtimeWindow.__hfStudioManualEditsApply?.();
return true;
}

// Calls through the live slot (see above) rather than closing over
// `applyManifest` directly, so this wrapper always runs the CURRENT
// generation's apply logic even if it's an older wrapper left in place
// by a prior script generation.
const wrappedSeek = function (this: unknown, time: number): unknown {
const result = seek.call(this, time);
applyManifest();
runtimeWindow.__hfStudioManualEditsApply?.();
return result;
};
markWrapped(wrappedSeek);
set(wrappedSeek);
applyManifest();
runtimeWindow.__hfStudioManualEditsApply?.();
return true;
};

Expand Down
2 changes: 1 addition & 1 deletion packages/studio/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@hyperframes/studio",
"version": "0.7.85",
"version": "0.7.86",
"description": "",
"repository": {
"type": "git",
Expand Down
26 changes: 26 additions & 0 deletions releases/v0.7.86.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# HyperFrames v0.7.86

Released on 2026-07-30.

Hardens media probing against malformed frame rates, option-like file paths, and
out-of-order PNG color metadata, while keeping Studio timeline latency telemetry
non-negative. Contributor documentation now points to the correct Studio
development port.

## Fixes

- **Studio:** Prevent negative timeline latency telemetry ([b813b1734](https://github.com/heygen-com/hyperframes/commit/b813b17345531874a00b3c755f60ee6f42849fee), [#2905](https://github.com/heygen-com/hyperframes/pull/2905))
- **Engine:** Harden ffprobe parsing and command arguments ([f75ca076b](https://github.com/heygen-com/hyperframes/commit/f75ca076b790d38e518af892b67a9ea42cca3dd5), [#2740](https://github.com/heygen-com/hyperframes/pull/2740))

## Docs & Examples

- **Studio:** Document monorepo dev server port ([a52dd9c30](https://github.com/heygen-com/hyperframes/commit/a52dd9c3087c63a5c2c7f38d480961794d8c5eae), [#2902](https://github.com/heygen-com/hyperframes/pull/2902))
- **Contributing:** Fix studio dev server port in setup guide ([ffe5e12cf](https://github.com/heygen-com/hyperframes/commit/ffe5e12cf8f404b86e019d28ca25dc75de903d57), [#2901](https://github.com/heygen-com/hyperframes/pull/2901))

## Internal

- **Pr To Video:** Pin the code-vocabulary section of the frame packet ([7b3d3db8a](https://github.com/heygen-com/hyperframes/commit/7b3d3db8adbfb7e04663d7373b9fd62c71321e6c), [#2900](https://github.com/heygen-com/hyperframes/pull/2900))

## Full changelog

https://github.com/heygen-com/hyperframes/compare/v0.7.85...v0.7.86