Commit Graph
1947 Commits
Author SHA1 Message Date
Akshar Patel 316e723409 fix(cli): preserve caption arrays during transcript reimport (#6185) 2026-10-24 08:16:07 +00:00
Rudy Mizrahi Celekli 004409e570 fix(cli): preserve authored clip length when moving (#5315)
Signed-off-by: Rudy Celekli <rudy@gradiahq.com>
2026-10-24 08:15:49 +00:00
Miguel Ángel f3d00799e4 fix(cli): remove-background keeps going on CPU when a provider fails on a frame (#6201)
* fix(cli): remove-background keeps going on CPU when a provider fails on a frame

* test(cli): state the frame-failure fallback as the rule it pins
2026-10-24 08:13:03 +00:00
Abdullah M. Nazif d63ff907aa fix(cli): read explicit TTS file input before synthesis (#5306) 2026-10-24 07:31:57 +00:00
Abdullah M. Nazif f937076b26 fix(cli): preserve unrelated package versions during upgrades (#5347) 2026-10-24 07:31:54 +00:00
Abdullah M. Nazif 0e4a0ffbab fix(cli): preserve CSS priority during full-page capture (#5316) 2026-10-24 07:31:52 +00:00
Abdullah M. Nazif 94a265e486 fix(core): sample hue curves across their periodic seam (#5287) 2026-10-24 07:31:49 +00:00
Rudy Mizrahi Celekli 81c2968545 fix(cli): keep error normalization string-valued for custom JSON (#5723) 2026-10-24 07:20:52 +00:00
Rudy Mizrahi Celekli d338baf873 fix(cli): preserve unicode when truncating feedback links (#5721) 2026-10-24 07:18:47 +00:00
Rudy Mizrahi Celekli 49a7700372 fix(cli): read and patch byte-marked project configs (#5725) 2026-10-24 07:18:44 +00:00
Akshar Patel 3596a7f22b fix(cli): report failed tag installations to scripts and agents (#6086)
* fix(cli): report failed tag installations to scripts and agents

* fix(cli): restore status markers in tag install summaries
2026-10-24 07:18:42 +00:00
Miguel Ángel c618c71ad5 fix(cli): snapshot --output clears only the frames it wrote (#6176)
* fix(cli): snapshot --output clears only the frames it wrote

* fix(cli): drop the comment the snapshot name pattern does not need
2026-10-24 06:28:42 +00:00
Miguel Ángel ebb057fb62 fix(cli): a check that hits its deadline keeps the findings it already made (#6190) 2026-10-24 05:08:49 +00:00
Abdullah M. Nazif 0b8f5ec8f5 fix(cli): normalize muted targets before applying tolerance (#5291) 2026-10-24 05:01:46 +00:00
Miguel Ángel 5ebbc8ef6d fix(studio-server): project history no longer copies video, audio or huge files (#6171)
* fix(studio-server): project history no longer copies video, audio or huge files

* fix(studio-server): clean drops old video and audio copies in every history

* fix(studio-server): TypeScript source is not media, so its history is kept

* fix(studio-server): split the media reclaim and point the slow-copy route test at a non-media file

* fix(studio-server): no unused expression when collecting a history's hashes
2026-10-24 04:12:48 +00:00
Abdullah M. Nazif 2a9b9f4e7c fix(cli): audit clipped text beneath transparent composition hosts (#5400) 2026-10-24 04:11:34 +00:00
Abdullah M. Nazif 9ab4de4599 fix(cli): refuse undo when a target or backup is missing (#5365) 2026-10-24 04:11:31 +00:00
Abdullah M. Nazif bd0be1bdae fix(cli): stage temporary HTML comparisons without recursive copies (#5286) 2026-10-24 04:11:21 +00:00
Abdullah M. Nazif 9e533f0887 fix(cli): fail benchmarks with no completed renders (#5303) 2026-10-24 04:11:12 +00:00
Abdullah M. Nazif 8a84bedd38 fix(cli): read info metadata from the root composition (#5299) 2026-10-24 04:11:08 +00:00
Abdullah M. Nazif 1001a79419 fix(cli): capture images declared only through srcset (#5298)
* fix(cli): capture images declared only through srcset

* chore: prepare conflict resolution against current main

* fix(capture): retain srcset coverage with validated GIF redirects
2026-10-24 04:11:06 +00:00
Abdullah M. Nazif 410030a733 fix(cli): close asset streams when clients disconnect (#5321)
* fix(cli): close asset streams when clients disconnect

* chore: prepare conflict resolution against current main

* fix(cli): retain asset disconnect cleanup with current main
2026-10-24 04:11:02 +00:00
Abdullah M. Nazif 58752b5cf3 fix(cli): preserve portrait orientation during background removal (#5313) 2026-10-24 04:10:58 +00:00
Abdullah M. Nazif 1e6a2f0ff9 fix(cli): tolerate invalid optional package cache manifests (#5349) 2026-10-24 04:10:53 +00:00
Abdullah M. Nazif c00a1bc1d4 fix(cli): honor HTML attribute casing in frame-rate defaults (#5348)
* fix(cli): honor HTML attribute casing in frame-rate defaults

* chore: prepare conflict resolution against current main

* fix(cli): preserve HTML fps casing with shared cloud defaults
2026-10-24 04:10:49 +00:00
Abdullah M. Nazif ad06c60c74 fix(cli): preserve stylesheet order during website capture (#5311)
* fix(cli): preserve stylesheet order during website capture

* chore: prepare conflict resolution against current main

* fix(cli): retain captured stylesheet order with current main

* chore: prepare conflict resolution against current main

* fix(capture): retain cascade coverage with validated redirects
2026-10-24 04:10:41 +00:00
Abdullah M. Nazif e10155ce35 fix(cli): detect beats from child media sources (#5310)
* fix(cli): detect beats from child media sources

* chore: prepare conflict resolution against current main

* fix(cli): integrate child beat sources with native decoding
2026-10-24 04:10:38 +00:00
Abdullah M. Nazif 58578fc229 fix(cli): retain metadata when Lottie previews exceed the size limit (#5307) 2026-10-24 04:10:36 +00:00
Abdullah M. Nazif ac6c682a0d fix(cli): show complete history diffs for large text changes (#5305)
* fix(cli): show complete history diffs for large text changes

* fix(cli): read history diff through its original descriptor
2026-10-24 04:10:31 +00:00
Abdullah M. Nazif e7f6c12b91 fix(cli): tolerate removed files during desktop catch-up (#5350) 2026-10-24 04:10:18 +00:00
Abdullah M. Nazif e0317a23c0 fix(cli): respect image orientation in capture contact sheets (#5295) 2026-10-24 04:10:16 +00:00
Abdullah M. Nazif d94a9d7aab fix(cli): protect batch input from generated manifest (#5294) 2026-10-24 04:10:14 +00:00
Miguel Ángel 0d104e6fca fix(cli): init never touches installed skills and no command removes one (#6168)
* fix(cli): init and skills update only touch HyperFrames skills; --skip-skills works

* fix(cli): init never touches installed skills and no command removes one

* fix(cli): shorten the init skills comment

* fix(cli): shorten the init skills comment

* fix(cli): the stale-skills notice reaches agents that run without a terminal

* test(cli): a run without a terminal now checks skills in the background

* fix(cli): the stale-skills notice also prints on --json runs
2026-10-24 04:08:29 +00:00
Miguel Ángel cf7266d815 chore: release v0.8.191 (#6170) 2026-10-24 01:40:50 +00:00
Dante 7dd83b8513 test: preserve browser cleanup and regression failure evidence (#5773) 2026-10-24 01:30:54 +00:00
Abdullah M. Nazif 5b8e539f96 fix(cli): recognize painted ancestor text backgrounds (#5342)
* fix(cli): recognize painted gradient children on older Chrome

* fix(cli): recognize ancestor image text masks

* fix(cli): report clipped ancestor text on older Chrome
2026-10-24 00:43:33 +00:00
Abdullah M. Nazif 0e0f7f803a fix(cli): audit audio slots at their authored playback speed (#5300) 2026-10-24 00:43:25 +00:00
Abdullah M. Nazif 051584c222 fix(cli): hide background preview consoles (#5345)
* fix(cli): request hidden consoles for background launches

* fix(cli): keep custom browser windows visible
2026-10-24 00:43:12 +00:00
Jerrai 7a34d6fbe4 docs: align render, fps and transcribe docs with the CLI (#6166)
* docs: align render, fps and transcribe docs with the CLI

- docs/guides/rendering.mdx: default render quality is `looks` (CRF 16),
  not `standard`.
- docs/packages/cli.mdx, render --help (render.ts): default --output is the
  timestamped `renders/<project>_<YYYY-MM-DD>_<HH-MM-SS>.<ext>`.
- skills/hyperframes-cli/references/preview-render.md: local --fps accepts
  1-240 or a rational and defaults to the root data-fps, else 30; only
  lambda and cloudrun are limited to 24, 30, 60.
- skills/hyperframes-cli/references/lint-validate-inspect.md: snapshot
  --range is documented as START,END like every other reference.
- skills/media-use/references/audio.md, skills/media-use/audio/references/
  transcribe.md, skills/hyperframes/references/captions.md: name the entry
  point for each transcription default (transcribe.mjs prefers Parakeet;
  `hyperframes transcribe` uses Parakeet when installed, else the small.en
  whisper model).
- transcribe --model help text and docs/packages/cli.mdx: list `small` and
  `medium`, which the CLI already accepts.
- skills-manifest.json: regenerated hashes for the three skills touched.

— Jerrai

* docs: lambda and cloud run also accept 25 fps

Distributed renders accept 24, 25, 30 and 60 fps (DISTRIBUTED_FPS in
packages/core/src/distributedFps.ts).

- skills/hyperframes-cli/references/preview-render.md: the --fps note
  lists 24, 25, 30, 60 for lambda and cloudrun.
- skills/hyperframes-cli/references/lambda.md, cloudrun.md: --fps lists
  include 25.
- packages/cli/src/docs/rendering.md (`hyperframes docs rendering`): --fps
  said 24, 30 or 60 and --quality defaulted to standard; local render takes
  1-240 or a rational, default root data-fps else 30, and the default
  quality is looks.
- skills-manifest.json: regenerated hyperframes-cli hash.

— Jerrai

* chore(skills): regenerate skills manifest after formatting

The format hook rewrote skill markdown after the manifest hook had hashed
it, leaving the hyperframes-cli hash stale.

— Jerrai
2026-10-24 00:29:56 +00:00
Rudy Mizrahi Celekli 84e6dfd247 fix(cli): exclude rendering flags from tween tail warnings (#5711) 2026-10-24 00:28:10 +00:00
Miguel Ángel 3439433d67 perf(aws-lambda): a render reads a video's audio from a small file stored beside it (#6162)
* perf(aws-lambda): a render reads a video's audio from a small file stored beside it

A video's audio is interleaved with its pictures, so mixing it from the cloud read the whole video (2.5 GB for a 20-minute 4K film) at the Lambda's network speed. lambda sites create now stores each large video's audio packets as a separate object keyed by the video's hash; the audio task reads that when it exists.

* chore(producer): shorten the audio sidecar header comment

* fix(aws-lambda): no audio sidecar for a video whose audio starts late or that has several tracks

* test(producer): format the audio sidecar tests and end their ffprobe options with --
2026-10-23 23:12:52 +00:00
Miguel Ángel 1552f52fbe fix(cli): snapshot waits for the image layers a seek reveals before capturing (#6161)
* fix(cli): snapshot waits for the image layers a seek reveals before capturing

x

* style(cli): shorten the late-image test comment

* style(cli): trim three comments so the comment share of the capture file goes down
2026-10-23 22:55:36 +00:00
Miguel Ángel 55cbc0e158 feat(cli): check writes a progress line to stderr per sample, overlap batch and craft frame (#6151)
* feat(cli): check writes a progress line to stderr per sample, overlap batch and craft frame

* fix(cli): the check progress lines are written by the CLI, not by the pipeline tests call
2026-10-23 22:14:44 +00:00
Miguel Ángel e48d5d4a5c chore: release v0.8.190 (#6158) 2026-10-23 21:54:34 +00:00
Vance IngallsandClaude Sonnet 5.5 79b57ab12d feat: automatic tier, 240°/32 defaults, check finding, and Studio stops opting out (#6108)
* feat: check names the filter fallback, the render log names the tier, Studio stops opting out

hyperframes check reports motion_blur_filter_fallback (info) with the reason capture could not
run and the way back to it. The engine's per-session log line gains tier=, and its pixel test
covers the fallback over a WebGL page. Studio no longer sends previewMotionBlur: every Chrome
can preview blur now, through the fallback where it lacks html-in-canvas; the server still
accepts false from an older Studio.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* feat(core): blur picks the cheaper filter tier when every mover only translates

The scan now notes whether any mover turns or scales (the linear part of its transform chain
changes) and whether it already forms a stacking context while it moves. When every mover only
translates, the filter tier draws as well as capture and costs about what no blur costs: on an
8 s bench shot a render took 7.0 s against 9.9 s with capture and 7.3 s with no blur. Anything
that turns or scales, or moves without a transform, stays on capture.

data-motion-blur-tier="capture" or "filter" forces a tier. The report says which one drew
and why (translation-only, tier-attribute); hyperframes check stays quiet for those two, which
are choices, not fallbacks. The pixel tests run the shared assertions through both tiers.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* docs(motion-blur): the two tiers, the tier attribute, and what changed in limits

The guide described blur turning off for WebGL, a root transform and similar. It now says the
filter tier draws instead, how the tier is chosen and forced, what each does with a turn or a
zoom, the measured cost of each, and which findings check emits. The skill note drops the
off-for-WebGL advice and the 1.7x figure.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* feat(core): blur defaults match a 240 degree shutter and at least 32 samples

The shutter opens 240 degrees by default (was 180) and each mover gets at least 32 taps (was
sized to the smear alone, down to 2), growing with the smear as before. These are the settings
the shutter blur Jake built uses; on the card whip the default render is now 51 dB from his
(34.6 dB at the old defaults). The guide's attribute table says so.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* chore(core): trim tier.ts comments to the ratchet

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

* chore: allow deleting the Studio previewMotionBlur render test

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-23 14:20:17 -07:00
Miguel Ángel 9fe0511c2e fix(cli): render -c takes an absolute entry inside the project, relative to the project (#6141)
* fix(cli): render -c takes an absolute entry inside the project, relative to the project

An absolute entry was returned as typed, so the producer joined it onto the project path and failed with the entry not found. A project reached through a symlinked path (macOS /tmp) refused its own files as outside the project. The entry is now checked against both spellings of the project path and handed on project-relative.

* test(cli): import the filesystem helpers the entry tests use

* chore(cli): format the entry path tests
2026-10-23 19:31:30 +00:00
Miguel Ángel b7e2278e24 chore: release v0.8.189 (#6140) 2026-10-23 18:13:30 +00:00
Miguel Ángel 8411956534 fix(cli): long projects check to completion: boxed resumable copies, --prepare-media, idle deadline (#6104)
* fix(cli): check copies hostile videos at the composition size, not the source size

* fix(cli): the check server serves the copy the page names with hf-proxy-box

* feat(cli): check --prepare-media makes the video copies alone, and a stopped copy resumes

A long source is copied in one-minute pieces that stay in the cache, so a copy
that is killed or runs out of time continues from its finished pieces.
check --prepare-media runs only that step: no browser, no report, a per-file
result as JSON, and exit 1 when a copy failed.

* fix(studio-server): keep finished copy pieces while their copy runs

The short limit for dead partial copies would delete the first pieces of a
long copy that is still encoding. Finished pieces now follow their own
one-hour limit and are never swept while their copy is in flight.

* refactor(studio-server): shorten two comments

The comment gate limits a comment line to 120 characters and a run to four lines.

* refactor(studio-server): drop comments the names already carry

The comment ratchet lets a file's comment share only go down.

* fix(cli): the check server pre-warms the copy the page asks for, not the source-size one

The server started a source-size copy of every hostile video next to Chrome on
each check, because its pre-warm passed no box while the page and the up-front
copy use the composition's box. The pre-warm now takes the same box, found by
the one helper the up-front copy uses.

* fix(cli): end a check on no progress, not on a 120 s wall clock

The check ended 120 s after Chrome was ready no matter what it was doing, so a
long project whose sampling and overlap pass each kept working still failed
(the overlap pass was one page call that reported nothing for its whole run).

The deadline is now an idle clock: every phase entered, every sample finished,
every overlap batch of eight times and every operation that settles restarts it,
and the check ends only after 120 s with none. The overlap grid is asked for in
batches so it can report between them.

* refactor(cli): shorten the idle deadline comment

The comment gate allows 120 characters on a comment line.

* test(cli): check's overlap grid runs in page tasks of at most 8 samples

* fix(cli): check test types for the cli lib, studio-server size budget for resumable copies
2026-10-23 16:32:28 +00:00
Miguel Ángel 3badc9bfa5 chore: release v0.8.188 (#6122) 2026-10-23 09:53:45 +00:00
Miguel Ángel 6fe83060d9 chore: release v0.8.187 (#6115) 2026-10-23 06:32:30 +00:00