Automated release: version and notes generated from pull requests merged since 1.17.0.
Fixed
- The caption size is fitted on the template path too.
render.py --template NAMEfills the
captionsizefrom the delivery table and forwarded it as an explicit--size, which is how
caption.pyis told "a human chose this size" — so--fit-size autonever ran and a long cue
was split across two consecutive cues on every template run (eval 18 cw1/dl1/dl3/dl4), the one
path a "make this a TikTok" request takes. A template's filled project now states
"fit_size": "on"; a template file that states its ownfit_size, and a brand file that
actually statescaption.size, still win —--brandon its own is not a stated size, so a
brand of colours or a font keeps the fit — and"fit_size": "off"reproduces 1.17.0's captions
byte for byte. render.pyproject captions acceptfit_size,min_sizeandfit_size_scope(eval 18
cs1: the keys were refused as unknown, so the fit policy could not be stated in a project at
all and the four stages had to be run by hand).render.py's result also carries the caption
stage's own block ascaption.- SKILL.md routes the 1.17 features. Filler words →
silence.py --filler --words, cutting to
the music →scenes.py --beatsthencut.py --snap beats, a folder and the cores →
batch.py --jobs auto, one stage changed →render.py --cache DIR. None of them appeared in
the routing table, so runs rebuilt them by hand or reported the feature does not exist (eval 18
bt2/fw1/fw3/rc1). Paid for with duplicated wording elsewhere: the file is still under the
30,000-byte budget. - One label for a partial result. SKILL.md now states it: a partial result is
Done:with the
shortfall inNotes:, never a third label likeDone (partially):. caption.pysays when the text is unchanged:caption text unchangedin the summary and
text_unchanged: truein the result when the drawn text equals the cues that were handed in —
nothing transcribed, no cue dropped, no cue split across two cues and no glyph stripped by
--emoji none. Wrapping, line breaks and timing do not count as a change; the key is burn mode
only (--mode muxnever touches the text and omits it).- #234: child-process output is decoded as UTF-8, never as the machine's code page. On a
Windows cp932 localetext=Truedecoded ffprobe's UTF-8 JSON with the console code page, the
reader thread raisedUnicodeDecodeError,communicate()returned an empty stdout and
probe.pyprinted?s | no video | no audioand exited 0 — an unmeasured file reported as
measured. Every child capture inscripts/(ffmpeg, ffprobe, fc-list/fc-match, whisper, the
sibling tools render.py and batch.py run) now passesencoding="utf-8", errors="replace"--
includingrun_analysis(), the capture every ffmpeg measurement goes through, and the two
captures inevals/-- and
a probe whose ffprobe printed nothing refuses withkind: inputnaming the unreadable output
instead of returning a document of nulls. - evals:
write_fixtures.pystages a batch recipe'soutput_dirabsolute under the prompt's
own directory — a relative"out"resolved against the caller's cwd, so the staged recipe wrote
outside the prompt folder and had to be rewritten before the prompt could be answered. - fix: 1.17.1 — fit-size reachable from templates, SKILL.md routes the 1.17 features, UTF-8 child output (#234) (#237)
- docs: eval 18 at 1.17.0 (100 prompts, focused Opus grader, trigger 50/50) (#236)
What's Changed
- docs: eval 18 at 1.17.0 (100 prompts, focused Opus grader, trigger 50/50) by @claude[bot] in #236
- fix: 1.17.1 — fit-size reachable from templates, SKILL.md routes the 1.17 features, UTF-8 child output (#234) by @claude[bot] in #237
Full Changelog: v1.17.0...v1.17.1