Repository navigation
[0.12.0] - 2026-10-18
Generated-prompt quality pass across the deterministic templates and the LLM
rewrite, verified end-to-end against a local reasoning-model endpoint.
Added
core/render.py: shared prompt primitives —scene_phrase/scene_noun
(naturalized, slugline-free setting), per-shotseed_key,camera_sentence
with a used-camera set for variety,soundscape_sentences(real audible cues
from the script's action), andmusic_line(N/Aunless a score is named).core/characters.py: capture appositive intros (DANI, a nervous junior reporter, ...) as character descriptions.core/llm.py:project_context+Rewriter(one cached per-project context
call), acontext=parameter threaded throughmessages/rewrite, a
validate→repair loop (llm.fix_attempts), andsanitizeto repair the
format deviations small models make (inlined field labels, mis-placed dialogue
language tags, dialogue stranded afternon_diegetic_music, over-long audio
fields, and cut times likeAt 3.87snormalized toMM:SS.mmm).core/llm.py:llm.disable_thinking(defaulttrue) sends
chat_template_kwargs: {enable_thinking: false}so reasoning models (Qwen3
etc. via koboldcpp) don't spend the whole token budget on a chain-of-thought
preamble.tests:test_llm.pysanitizer/thinking-toggle coverage and
test_quality.py::TestGeneratedPromptQuality(no raw sluglines, no timestamp
on[Shot 1], camera variety, dialogue-free soundscape,N/Adefault music).
Changed
core/prompts.py: stronger_COMMON/_R2Vsystem prompts — naturalized
setting, no raw slugline/transitions, camera variety, soundscape = sounds
only, musicN/Adefault, explicit output skeleton and dialogue format.core/fallback.py,core/r2v.py: build shots from the new render primitives
(per-shot seeds, varied cameras, derived soundscape, music rule).core/config.py+config.toml: newllm.fix_attempts,llm.context,
llm.disable_thinkingoptions.__main__.py,app/web.py: constructllm.Rewriter(with character bible +
context) when the LLM path is enabled.
Fixed
core/characters.py: possessive cue names keep the apostrophe lowercase
(WILL'S DATE->Will's Date, notWill'S Date).