Commit Graph
1810 Commits
Author SHA1 Message Date
James RussoandClaude Opus 5.5 f180ffca64 fix(cli): reap only orphaned browsers HyperFrames launched (#6251)
* fix(cli): reap only orphaned browsers HyperFrames launched

Orphan cleanup on preview and render killed every PPID-1 process of the
current user whose args named chrome-headless-shell or a Puppeteer temp
profile, which included detached browsers started by other tools.

Every HyperFrames Chrome launch now passes an inert
--hyperframes-owned-browser switch, and the reaper only kills PPID-1
processes that carry it as a whole argument.

Fixes #6203

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

* fix(core): serve the browser marker from its own subpath

The GCP image's BeginFrame contract step imports the engine's
browserManager straight from source before core's generated runtime
exists, so pulling the marker from the core root entry broke it.
A dependency-free @hyperframes/core/browser-marker subpath keeps that
import chain as light as it was.

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

* test(cli): expect the browser marker in the capture fallback launches

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

* docs(cli): say orphan cleanup runs before preview and render

The cleanup only stops browsers HyperFrames launched, so the opt-out is
no longer needed to protect other tools' browsers.

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-24 23:09:57 +00:00
Dante aefca2144c fix(cli): allow disabling orphan browser cleanup (#6213) 2026-10-24 22:13:25 +00:00
Miguel Ángel fcec26ed5f fix(cli): a Chrome download that stops sending is abandoned, retried, and releases the lock (#6222)
* fix(cli): a Chrome download that stops sending is abandoned, retried, and releases the lock

* fix(cli): a stalled Chrome download is aborted at the socket so the process can exit

* fix(cli): the Chrome download runs in its own process and is killed when it stalls

* test(cli): ignore the expected socket reset in the download stall test on Windows
2026-10-24 17:53:54 +00:00
Miguel Ángel 89081b9197 chore: release v0.8.193 (#6229) 2026-10-24 12:39:08 -04:00
Sergey S 24965372db fix(cli): each start sweeps the running markers of CLIs that are gone (#5790)
A CLI killed by a signal never runs its exit listener, so its file in
~/.hyperframes/running stays. Only the background installer swept those
files, and it never runs for an install layout it skips ("Unknown install
layout", e.g. a CLI bundled inside another tool), so the folder only grew:
185 markers since 2026-10-05 on one machine, none of them a live CLI.

registerRunningCli now removes, besides its own file, every file whose pid
is gone, whose name is not a pid, or whose heartbeat is older than
RUNNING_STALE_MS (a reused pid) — the installer's own criterion. The sweep
never throws, so a failure cannot skip the heartbeat or the exit listener.

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

The test reads the running folder's listing instead of checking each path, so no
existence check precedes a write to the same path (CodeQL, file system race).
2026-10-24 15:15:25 +00:00
Miguel Ángel 80be6ff039 fix(cli): snapshot rejects a negative --at and builds its sheet from its own frames (#6179)
* fix(cli): snapshot rejects a negative --at and builds its sheet from its own frames

* fix(cli): snapshot --at refuses an empty value and trailing junk too

* test(cli): the contact sheet test's fake image reads orientation like the sheet now does
2026-10-24 13:23:36 +00:00
Miguel Ángel 3cbd98890e fix(cli): snapshot seeks into a HEVC cut whose index lands a keyframe early (#6217)
Seeking to a keyframe's own time landed on the one before it, so every candidate failed the
repeat-landing check and the frame was found by decoding from the start of the file. An
accurate seek to the keyframe's time decodes from that earlier keyframe and drops what precedes it.
2026-10-24 13:15:11 +00:00
Miguel Ángel 0eae4946d3 fix(studio-server): a history restore refuses to remove every tracked file (#6175)
* fix(studio-server): a history restore refuses to remove every tracked file

* test(studio-server): compare the held clip by bytes so the adopting check stays fast

* fix(studio-server): history's own hidden records do not count as files a restore keeps

* refactor(studio-server): name the restore guard's check instead of commenting it

* chore(studio-server): re-baseline the packed size budget for the restore guard
2026-10-24 12:51:30 +00:00
Miguel Ángel dd1cba49de test(cli): the lifecycle suite lets background imports settle before it resets modules (#6216) 2026-10-24 12:48:44 +00:00
Miguel Ángel 1a238171ec test: the lifecycle and thumbnail suites load cold modules in a hook, not in their first test (#6212)
* test(cli): the lifecycle suite warms the CLI module graph in a hook, not in its first test

* test(studio): the thumbnail suite warms puppeteer in a hook and cancels leftover requests
2026-10-24 11:26:33 +00:00
Miguel Ángel c16b783f5e chore: release v0.8.192 (#6206) 2026-10-24 08:51:29 +00:00
James RussoandClaude Opus 5.5 17dd4ee347 fix(cli): keep beats audio paths inside the project (#6188)
* fix(cli): keep beats audio paths inside the project

An encoded ../ in the music src decoded to a path outside the project, so
hyperframes beats read that file and wrote beats/<rel>.json outside the
project too. Fail the command when either path escapes.

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

* fix(cli): drop added comment in beats containment check

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

* fix(cli): resolve symlinks in beats path containment

The lexical check let a symlinked folder inside the project send the read
or the beat-file write outside it, and refused an in-project file named
..music.wav. Use the realpath-aware resolveWithinProject and isSafePath
from core for both paths.

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-24 08:23:32 +00:00
Miguel Ángel c324a40a87 fix(cli): lint accepts one composition file as well as a project directory (#6202) 2026-10-24 08:22:53 +00:00
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