6465 Commits
Author SHA1 Message Date
Miguel Ángel 360ca9cf61 chore: release v0.8.220 (#6781) v0.8.220 2026-10-30 03:37:22 +00:00
Miguel Ángel 6b7e2c96eb ci(windows): split the engine-cli test lane into two shards (#6670)
* ci(windows): split the engine-cli test lane into two shards

* test(cli): the agent-mode test runs alone, after the files it starved
2026-10-30 03:37:15 +00:00
Miguel Ángel 6c78dee993 perf(studio): a long project's timeline stops redrawing every clip when its elements change (#6773) 2026-10-30 03:24:28 +00:00
Miguel Ángel c922591c6c ci: edit accuracy shards start once the CLI is built, not after all of Build (#6777) 2026-10-30 03:06:12 +00:00
Miguel Ángel 54c98b5906 fix(engine): a video on a non-square pixel grid renders at its display shape (#6772)
* fix(engine): a video on a non-square pixel grid renders at its display shape

* chore(engine): drop comments the names already carry

* fix(engine): a rotated clip with a non-square pixel grid keeps its display shape

* test(engine): the frame probes end their options with -- like every ffprobe call
2026-10-30 03:00:25 +00:00
Miguel Ángel a66b2c8035 fix(cli): anonymous hosts and host in-points move a caption word's lifetime window (#6774)
* fix(cli): anonymous hosts and host in-points move a caption word's lifetime window

* fix(cli): a host's end and playback-start are read like the runtime reads them
2026-10-30 02:56:28 +00:00
Miguel Ángel 8fb08f2a7c fix(engine): a render no longer waits for a sub-composition timeline no script can register (#6764)
* fix(engine): a render no longer waits for a sub-composition timeline no script can register

* fix(engine): the timeline wait matches a twice-mounted id and a template-literal key
2026-10-30 02:56:22 +00:00
Miguel Ángel 0a18d8c350 fix(cli): browser clear reports a browser folder Windows still holds (#6776)
* fix(cli): browser clear still reports a folder Windows holds, and the EBUSY test covers EPERM

* fix(cli): browser clear reports a locked browser folder, with a test that fails if it does not
2026-10-30 02:38:16 +00:00
Miguel Ángel d1c0593717 fix(cli): text-to-speech ignores a foreign PYTHONPATH when it looks for kokoro-onnx (#6769)
* fix(cli): text-to-speech ignores a foreign PYTHONPATH when it looks for kokoro-onnx

* fix(cli): shorten the pythonEnv comment

* fix(cli): text-to-speech keeps a deliberate PYTHONPATH unless the packages fail with it

* fix(cli): drop the python.ts comments the names already say
2026-10-30 02:25:39 +00:00
Miguel Ángel 471d60a8ac fix(core): the playhead keeps moving at a cut while the incoming take has not started (#6768)
* fix(core): the playhead keeps moving at a cut while the incoming take has not started

* fix(core): shorten a comment in the clock

* fix(player): keep the WebKit stops script out of the type check

* fix(core): cut two comments from the clock
2026-10-30 02:25:26 +00:00
Miguel Ángel a30a520970 chore: release v0.8.219 (#6775) v0.8.219 2026-10-30 02:07:39 +00:00
Miguel Ángel c5a52037c9 fix(core): a still sub-composition's data-no-timeline on its template root skips the timeline wait (#6762)
* fix(core): a still sub-composition's data-no-timeline on its template root skips the timeline wait

* chore(core): drop a comment the copy already says
2026-10-30 01:48:17 +00:00
Miguel Ángel f523ee2fca fix(cli): check flags caption words hidden behind a cut-out and ignores a mostly transparent cover (#6770)
* fix(cli): check flags caption words hidden behind a cut-out and ignores a mostly transparent cover

* fix(cli): a caption word's lifetime is shifted only by its composition hosts
2026-10-30 01:47:19 +00:00
Miguel Ángel 6874cc2890 fix(cli): a locked Chrome debug.log on Windows no longer fails check, snapshot or render (#6771) 2026-10-30 01:27:29 +00:00
Miguel Ángel 9c01e2e121 fix(cli): normalize-audio never cuts a clip that is quieter than the target (#6767)
* fix(cli): normalize-audio never cuts a clip that is quieter than the target

* fix(cli): carry the boost-hold rule in a name, not a comment

* fix(cli): normalize-audio no longer says a clip is matched when a limit holds it short of the target

* fix(cli): format normalize-audio, drop the extra comment, and say a held clip is held
2026-10-30 01:21:53 +00:00
Miguel Ángel aa094f3858 fix(cli): render with no -o writes to the project's renders folder from any directory (#6766) 2026-10-30 00:47:28 +00:00
James Russo f7db6ba40c chore: release v0.8.218 (#6758) v0.8.218 2026-10-29 23:31:55 +00:00
Miguel Ángel d81099b1ff fix(cli): Apple Silicon skips an ffprobe or ffmpeg that cannot run and names it (#6760)
* fix(cli): Apple Silicon Macs without ffmpeg get working arm64 ffprobe and ffmpeg

* fix(cli): drop the bundled ffmpeg installers, name the x86-only binary it skipped
2026-10-29 23:20:11 +00:00
James Russo 3e462f4277 feat(cli): use dedicated HyperFrames OAuth clients (#6687)
* feat(cli): use dedicated HyperFrames OAuth clients

* docs(cli): shorten credential store contract comment

* fix(cli): respect Windows modes in OAuth media test

* fix(cli): keep media workflows on HyperFrames OAuth

* test(cli): scope billing status assertions to wallet rows

* test(cli): align telemetry fixtures and CI auth inputs
2026-10-29 21:25:20 +00:00
Miguel Ángel 4e2a1c215a chore: release v0.8.217 (#6751) v0.8.217 2026-10-29 15:13:36 +00:00
Miguel Ángel b320a66d51 test(cli): a stalled download times out once its bytes are on disk, not on a clock (#6750)
* test(cli): stalled-download tests give each stall time for its bytes to reach disk

* test(cli): a stalled download times out once its bytes are on disk, not on a clock
2026-10-29 14:59:11 +00:00
Miguel Ángel 17ffe479dc feat(studio): a preview reload that gives up on the runtime says how far the page got (#6747)
* feat(studio): a preview reload that gives up on the runtime says how far the page got

* refactor(studio): read the reload's page phase in one place, before the frame is let go

* test(studio): every reload page phase is covered, and the hook gains no branch for it

* refactor(studio): the reload page phase reads the window only once the frame has a document
2026-10-29 14:37:08 +00:00
Miguel Ángel 558097ed70 fix(cli): check no longer calls a redrawn WebGL canvas a dead stretch (#6749)
* fix(cli): check no longer calls a redrawn WebGL canvas a dead stretch

* fix(cli): keep the seek comment under the line limit
2026-10-29 14:34:07 +00:00
Miguel Ángel a3ff1c4902 revert(engine): late-starting videos play to their last frame (#6746)
Reverts #6736. Its end-of-clip read fails intermittently on Windows, and the fallback
then expects frames past the clip's end.
2026-10-29 14:14:21 +00:00
Miguel Ángel 838f8782c4 fix(cli): a project .env only sets the CLI's own settings (#6565)
* fix(cli): a project .env only sets the CLI's own settings

The .env in the working directory could set any environment variable for every
command except capture. It now sets only the keys the CLI reads from a project:
the HeyGen, ElevenLabs and Figma credentials and the vision keys, models, Vertex
settings and timeout. Other keys are ignored, and one stderr line names them.

* test(cli): the startup test and comment budget follow the single project .env key list

* fix(cli): a project .env can still turn telemetry off
2026-10-29 12:41:46 +00:00
Miguel Ángel 22b53c0115 fix(engine): late-starting videos play to their last frame (#6736)
* fix(engine): late-starting videos play to their last frame

A video whose first frame is after timestamp 0 could end early (frozen
tail) or late: ffprobe's stream duration does not run from the first
frame in every container (fragmented MP4, Matroska). Such a video's end
is now read from its last packet, once, where its facts are probed.

* test(engine): the WebM-with-audio case measures its first frame from the file

* test(engine): the first-frame probe ends its arguments with the input file
2026-10-29 12:05:27 +00:00
Miguel Ángel 93f3d3dcbb fix(core): the preview's scene window settles when a scene can't unmount instead of hanging the page (#6740)
* fix(core): the preview's scene window settles when a scene can't unmount instead of hanging the page

* refactor(core): name the scene window's stuck step instead of commenting it
2026-10-29 12:04:12 +00:00
Miguel Ángel 943849025a feat(cli): a render that finds a file missing says which kind of file, never its path (#6742) 2026-10-29 12:03:09 +00:00
Miguel Ángel 1a80b5407d fix(cli): allow-occlusion on the covering element silences text_occluded (#6741)
* fix(cli): allow-occlusion on the covering element silences text_occluded

* fix(cli): allow-occlusion also works on graded video and does not excuse a card's own text
2026-10-29 12:00:55 +00:00
Miguel Ángel e1a8c7f173 fix(engine): long films show progress during the effect check and never wait minutes on it (#6697)
* fix(engine): long films start capturing at once instead of after a full effect scan

* fix(engine): give the effect scan two minutes, under the app's stall limit

* fix(engine): show effect scan progress so a long scan reads as preparing, not stalled
2026-10-29 10:35:12 +00:00
Miguel Ángel 0da46832ef fix(cli): a failed render's code comes only from the producer's list of safe codes (#6737) 2026-10-29 10:31:22 +00:00
Miguel Ángel 71f716a91b fix(core): telemetry redaction covers folders with spaces in any script (#6734)
* fix(core): telemetry redaction covers folders with spaces in any script

* style(core): shorten the redaction folder note

* fix(core): spaced folders without a root redact only before a file name

* style(core): drop the redaction note that described the leak as intended

* style(core): two fewer comment lines in the redactor

* fix(core): bound the spaced-folder match so long lines stay linear
2026-10-29 10:19:12 +00:00
Miguel Ángel 94203ad431 fix(cli): snapshot says FFmpeg was stopped when it exits 255 with no output (#6718)
* fix(cli): snapshot says FFmpeg was stopped when it exits 255 with no output

* style(cli): drop a doc comment the comment ratchet counts
2026-10-29 10:15:31 +00:00
Miguel Ángel eab6541f5b feat(cli): a feedback report names why the last check failed (#6717)
* feat(cli): a feedback report names why the last check failed

* fix(cli): feedback names a check that threw or never finished, with when it ran

* fix(cli): feedback says how old the last check is
2026-10-29 10:10:58 +00:00
Miguel Ángel 6df754fbf3 chore: release v0.8.216 (#6735) v0.8.216 2026-10-29 10:01:01 +00:00
Miguel Ángel 5d437d5eec docs(cli): say which audio probes run once per file (#6731) 2026-10-29 08:10:51 +00:00
Miguel Ángel 48ba0e5b2b fix(player): iPhone Safari keeps every take's sound after the first seconds of an edit (#6724)
* fix(player): iPhone Safari keeps every take's sound after the first seconds of an edit

* fix(player): shorten the priming comment

* fix(player): prime iPhone takes only, and only unmuted ones

* fix(player): shorten a comment

* fix(player): skip only clips authored muted, and drop a doc comment
2026-10-29 07:56:37 +00:00
Miguel Ángel 74f3234736 ci: one regression shard writes the test image cache (#6729)
* ci: one regression shard writes the test image cache, so it stops evicting the rest

* test(ci): each image cache has one writer, shard 0 of a main push
2026-10-29 07:53:07 +00:00
Miguel Ángel f0665f7181 fix(aws-lambda): the release ffmpeg build falls back to verified mirrors when a source host is down (#6728) 2026-10-29 07:47:04 +00:00
Miguel Ángel fa97f9d4b7 docs(cli): list check's audio findings with severity, trigger and fix (#6730) 2026-10-29 07:41:09 +00:00
Miguel Ángel 077de9bfe9 test(cli): the publish abort test checks the summary hint is absent (#6726) 2026-10-29 07:37:49 +00:00
Miguel Ángel ba8ffffa0b fix(cli): a failed render names its failure code for the Desktop app (#6725) 2026-10-29 07:36:32 +00:00
Miguel Ángel cf15892425 fix(cli): a snapshot still shows what playback shows, whatever other times are asked for (#6720)
* fix(cli): a snapshot still shows what playback shows, whatever other times are asked for

* test(cli): pin that still-capture pages ask for the skipped-frame replay
2026-10-29 06:44:51 +00:00
Miguel Ángel 98a28cc4b2 fix(cli): the lint summary points at hyperframes lint, not a flag only render takes (#6723) 2026-10-29 06:44:01 +00:00
Miguel Ángel be05c86932 perf(engine): encode high quality with the x264 fast preset (#6640)
* perf(engine): encode high quality with the x264 fast preset

* test(engine): name the NVENC p5 case by its preset, not the high tier
2026-10-29 06:40:21 +00:00
Miguel Ángel 17f5d67643 chore: release v0.8.215 (#6719) 2026-10-29 06:19:54 +00:00
WaterrrForever cd003e2010 perf(engine): size render workers from measured heap and the container's CPU quota (#6641)
* perf(cli): give render the heap its auto workers need in small containers

Auto worker sizing caps capture workers at (V8 heap - 1024 MB) / 640 MB.
Node sizes its default heap from visible memory, so in a 10 GB container
the heap is 2,096 MB and every render captures with one worker, whatever
the core count.

When no --workers is given, no --docker, no heap was set by hand, and the
heap is the only bound holding workers back, render relaunches itself once
with --max-old-space-size set to what CPU and memory allow (capped at half
of memory). The engine exposes heapMbForAutoWorkers() for this.

* fix(cli): count a heap-relaunched render once, keep detached renders alive

The relaunched child skips the CLI's command telemetry, update and skills
notices, and app-history notice; the parent already records and prints
them. A detached render no longer gets SIGHUP forwarded, which its
default handler would treat as a kill. A heap set as --max_old_space_size
counts as set by hand.

* fix(engine): keep the desktop app's per-worker heap figure at 640 MB

Inside Electron the heap is a hard 4,192 MB cage, and that is where the
field OOM behind the old figure happened (#5149: 5 auto workers on a heavy
export). The new 320 MB figure is measured only in a system Node, so the
desktop app keeps 640 MB (4 workers there) until a heavy desktop export is
measured. Containers and plain Node keep 320.

* fix(engine): know the packaged desktop app by its client tag, which runs the CLI on plain Node
2026-10-29 06:17:07 +00:00
Miguel Ángel 49e0312300 fix(ci): skills sync steps past the five hidden ClawHub versions blocking it (#6713)
* fix(ci): skills sync steps past any taken ClawHub version, not one hard-coded skill

* fix(ci): skills sync steps past the five hidden ClawHub versions blocking it
2026-10-29 05:20:41 +00:00
Miguel Ángel bb4deb8014 fix(cli): an unknown command like search says which command does that (#6710)
* fix(cli): an unknown command like search says which command does that

* fix(cli): the synonym hint is checked before the spelling match, so list, find and browse reach it
2026-10-29 05:03:43 +00:00
Miguel Ángel 2f8c4b1daf fix(cli): check says how many browser-playable copies are done while it makes them (#6712) 2026-10-29 05:02:58 +00:00