Commit Graph
220 Commits
Author SHA1 Message Date
zooqueen 6b2ed3a17f chore: release v0.7.83 2026-08-13 18:11:18 -07:00
zooqueen 75094e0d60 frames: publish the toolchain as @hanzo/frames
@hanzo/frame is taken by the hero video primitive — one full-bleed video
element — which has held that name on npm since it shipped. This repo is the
video toolchain: a CLI, a renderer, a studio, a player. Plural is what it is,
so the CLI publishes as @hanzo/frames and the workspace packages follow it
(@hanzo/frames-core, @hanzo/frames-engine, and the rest).

The binary stays `frames`, and now actually ships. The manifest mapped it to
bin/frames.mjs while the file on disk was bin/hyperframes.mjs, so a global
install produced no working command.

The paths that name a package to fetch were pointing elsewhere. The update
check read registry.npmjs.org/frames, a different author's package, and the
npm, bun and pnpm installers would have pulled it over the CLI; the render
image installed the upstream hyperframes; scaffolded projects and the docs
pinned the unscoped name. All of them now name @hanzo/frames.
2026-08-13 18:10:14 -07:00
zooqueen 375d1e2816 packages: publish as @hanzo/frame and talk to api.hanzo.ai
The npm scope becomes @hanzo: the CLI is @hanzo/frame, every library is
@hanzo/frame-<name>. Versions go to 0.7.82.

Credentials come from Hanzo IAM. `hanzo login` runs the IAM device flow and
writes ~/.hanzo/credentials.json; unattended runs read HANZO_API_KEY delivered
from Hanzo KMS. src/api.ts is the one place that knows the base URL and the
credential, replacing the OAuth client, PKCE flow, loopback server, token
store, and ~/.heygen credential file. `frames auth` keeps only `status`, since
this CLI no longer issues credentials.

Publish and feedback post to api.hanzo.ai/v1 without the HeyGen routing header.
The HeyGen-hosted `frames cloud` render target is gone; local, AWS Lambda, and
Google Cloud Run remain. Voice resolves to Hanzo speech (POST /v1/audio/speech)
before local Kokoro; music resolves to local MusicGen.

No analytics project is configured, so the CLI and studio send no events —
they previously reported to HeyGen's. Drops the HeyGen wordmark from the studio
header and the HeyGen promo render fixture with its brand assets and fonts.
2026-08-13 17:21:08 -07:00
zooqueenandHanzo Dev 70b41673a3 frames: rebrand the fork to Hanzo Frames
Forked from HyperFrames (Apache-2.0), full history preserved.

Hosts are mapped explicitly and BEFORE the identifier rename, because
hyperframes.heygen.com is not decoration: 175 of its occurrences are $schema
identifiers that a validator dereferences. A blind rename would have left them
naming a host that never serves them. The schema files are in this repo under
docs/schema, so the mapped host is one we can actually serve -- that is the
condition that makes the rewrite safe, and serving them is a deploy task, not
an edit. docs/schema/hyperframes.json is renamed to frames.json to match the
identifier it is now published under.

api.heygen.com and the CLI auth against heygen.com are left UNRENAMED on
purpose. They are a dependency on HeyGen's SaaS, not a name of ours to take,
and the right move is to remove that integration rather than rebrand it.

LICENSE and CREDITS.md are untouched; NOTICE records the lineage.

Co-authored-by: Hanzo Dev <[email protected]>
2026-07-28 23:42:24 -07:00
James 8d8a90ead1 chore: release v0.7.81 2026-07-29 06:11:11 +00:00
James RussoandGitHub fd43b2a61f fix(producer): retry transient deterministic font fetches (#2865)
* fix(producer): retry transient deterministic font fetches

* fix(producer): secure Lambda font cache directory
2026-07-28 22:49:03 -07:00
Miguel Ángel dec2313c2b chore: release v0.7.80 2026-07-29 02:22:54 +00:00
Miguel Ángel 493c941d12 chore: release v0.7.79 2026-07-28 23:06:45 +00:00
Vance Ingalls fb5768366e chore: release v0.7.78 2026-07-28 05:27:29 -07:00
James RussoandGitHub 2119cf24f7 fix(producer): validate distributed video metadata (#2839)
## What

- enforce a finite, validated `meta/videos.json` contract shared by Plan v1 and Plan v2
- preserve authored finite ends and source-derived trim-aware ends; bound any still-open end at the validated composition end
- fail distributed planning when any declared video source did not extract instead of publishing a blank-capable plan
- make the v1 chunk reader reject malformed/null video timing before frame injection
- route deterministic video-source/metadata failures as non-retryable in AWS and GCP while retaining retries for transient extraction failures

## Why

An open-ended video whose remote source could not be resolved retained `Infinity` through planning. Plan v2 correctly rejected that value, while Plan v1 serialized it as `null`; the v1 frame lookup could then suppress injected frames and silently produce incorrect output.

The invariant belongs at the shared metadata boundary. Both protocols must receive identical finite timing, and unavailable sources must fail closed before plan publication.

## Test plan

- [x] producer distributed planning, metadata, v1 chunk boundary, Plan v2 conversion/materialization, and public exports
- [x] core runtime media semantics (authored slots, natural duration, looping, non-looping hold)
- [x] engine video extraction and frame lookup
- [x] AWS Lambda/CDK/SAM and GCP Cloud Run error normalization/retry classification
- [x] producer, core, engine, AWS, and GCP typechecks/builds
- [x] formatting, oxlint, tracked-artifact, fallow, and commit hooks
- [x] exact incident composition replayed through the AWS Lambda handler's Lambda-local path in a Lambda-like container; Plan v1 and Plan v2 both fail closed as `VIDEO_SOURCE_UNRENDERABLE` during planning, before plan publication
- [x] full PR CI, including all nine regression shards and Windows render/tests

No production flags or deployment/release workflows are changed.
2026-07-28 00:42:36 -07:00
Miguel Ángel fcd9a82b64 chore: release v0.7.77 2026-07-28 02:12:41 +00:00
James cfe8467b58 chore: release v0.7.76 2026-07-27 05:08:40 +00:00
James 4548c34f64 chore: release v0.7.75 2026-07-27 03:38:16 +00:00
James bcbe7f1104 fix(producer): fallback distributed capture safely 2026-07-27 03:08:40 +00:00
James RussoandGitHub d9c8651082 chore: release v0.7.74 (#2818) 2026-07-26 21:57:54 -04:00
James 05549e631b fix(gcp): enforce effective BeginFrame capture 2026-07-27 00:02:37 +00:00
James 1164b321ad chore: release v0.7.73 2026-07-26 21:25:03 +00:00
James RussoandGitHub 43c286d237 Merge pull request #2795 from heygen-com/feat/plan-v2-aws-direct-publisher
feat(aws-lambda): publish plan v2 directly to S3
2026-07-26 02:23:35 -04:00
James RussoandGitHub 4868240ab0 chore: release v0.7.72 (#2800) 2026-07-26 02:01:10 -04:00
James bea1443379 feat(aws-lambda): publish plan v2 directly to S3 2026-07-26 05:47:56 +00:00
James RussoandGitHub efbb4b639d feat(aws-lambda): support plan protocol v2 (#2789)
* feat(aws-lambda): support plan protocol v2

* fix(aws-lambda): align SAM v2 terminal errors
2026-07-25 23:42:51 -04:00
James RussoandGitHub f5efcd1315 feat(producer): version distributed plan protocol (#2777) 2026-07-25 19:17:07 -04:00
James 4a9235f6e6 chore: release v0.7.71 2026-07-24 19:03:16 +00:00
Vance Ingalls 1509c1b3c6 chore: release v0.7.70 2026-07-23 20:59:30 -07:00
James dfd89b2252 chore: release v0.7.69 2026-07-23 12:03:36 -07:00
James cdd8f3bb4b chore: release v0.7.68 2026-07-22 04:41:54 +00:00
James 58084a9d07 chore: release v0.7.67 2026-07-21 23:51:05 +00:00
Miguel Angel Simon Sierra fa4a2890e3 chore: release v0.7.66 2026-07-21 14:36:22 +02:00
James a306668a19 chore: release v0.7.65 2026-07-21 04:45:59 +00:00
James 17aaaaa3c2 refactor(repo): centralize package subpaths 2026-07-18 15:58:23 -04:00
Miguel ÁngelandGitHub dfa6977230 chore: release v0.7.64 (#2630)
Release HyperFrames v0.7.64.
2026-07-18 15:02:20 -04:00
Miguel ÁngelandGitHub 4d00e3582b chore: release v0.7.63 (#2628) 2026-07-18 04:44:56 -04:00
Miguel ÁngelandGitHub 598d8736b3 chore: release v0.7.62 (#2626) 2026-07-17 22:02:49 -04:00
Vance Ingalls 0857cabfaf chore: release v0.7.61 2026-07-17 01:07:09 -07:00
Miguel Ángel 7817e3f4e5 chore: release v0.7.60 2026-07-16 05:26:57 +00:00
Vance Ingalls cf9fda9df1 chore: release v0.7.59 2026-07-15 11:57:49 -07:00
Miguel ÁngelandGitHub 48cf1c8ddd chore: release v0.7.58 (#2446) 2026-07-14 16:15:59 -04:00
Miguel ÁngelandGitHub 126c045a01 chore: release v0.7.57 (#2393) 2026-07-14 00:29:29 -04:00
Miguel ÁngelandGitHub 26fb837250 fix(pr-to-video): bound first-run workspace and context (#2382)
* fix(pr-to-video): bound first-run workspace and context

* fix(cli): expose validation gate in help

* fix(pr-to-video): harden workflow guardrails

* style(pr-to-video): apply repository formatting

* chore(skills): refresh pr-to-video manifest
2026-07-13 22:33:21 -04:00
Miguel Ángel 92488b9c03 chore: release v0.7.56 2026-07-13 07:04:42 +00:00
Vance Ingalls 9d5b621f53 chore: release v0.7.55 2026-07-12 11:52:53 -07:00
Vance Ingalls 364a5d4fee chore: release v0.7.54 2026-07-11 17:15:24 -07:00
Miguel Angel Simon Sierra a4f3e87fb1 chore: release v0.7.53 2026-07-11 15:59:07 -04:00
Vance Ingalls fd0ec49421 chore: release v0.7.52 2026-07-10 19:47:59 -07:00
Miguel ÁngelandGitHub 5b2c1aaccf chore: release v0.7.51 (#2188) 2026-07-10 20:16:15 -04:00
Miguel Angel Simon Sierra 10084163d2 chore: release v0.7.50 2026-07-10 18:48:40 -04:00
Vance Ingalls 6eed8c0446 chore: release v0.7.49 2026-07-10 09:57:48 -07:00
Miguel ÁngelandGitHub fb6ed99d88 chore: release v0.7.48 (#2118) 2026-07-09 21:49:58 -04:00
Miguel Angel Simon Sierra c106d3f5df chore: release v0.7.47 2026-07-09 20:34:59 -04:00
Vance Ingalls f8aff606bb chore: release v0.7.46 2026-07-09 12:01:33 -07:00