From 5eb4aac2cc7253ee5c3af63393f528ab6e0772b9 Mon Sep 17 00:00:00 2001 From: gator Date: Thu, 17 Sep 2026 20:57:07 +0000 Subject: [PATCH] Show what the picture check found, beside what the audio check found Every clip has been transcribed and compared with its script since the first film. Nothing looked at the picture, which is where this engine actually fails - two identical photographs on a mantel, half a car, a person nobody asked for. This renders the visual verdict the same way, and lists each fault with the wording change that would have prevented it. --- trailer.html | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/trailer.html b/trailer.html index a8f16b9..69d19e0 100644 --- a/trailer.html +++ b/trailer.html @@ -92,6 +92,12 @@ .chk{font-size:12px;border-radius:999px;padding:1px 8px;border:1px solid var(--line);color:var(--muted)} .chk.ok{color:var(--accent2);border-color:var(--accent2)} .chk.bad{color:#e0685f;border-color:#e0685f} + .eyes{margin:8px 0 0;font-size:12.5px} + .eyes .f{margin:4px 0;padding-left:10px;border-left:2px solid var(--line)} + .eyes .f.serious{border-left-color:#e0685f} + .eyes .f b{color:var(--ink)} + .eyes .fix{color:var(--muted);display:block;margin-top:1px} + .eyes .sum{color:var(--muted);font-style:italic;margin-bottom:5px} .ins{border-top:1px dashed var(--line);text-align:center;padding:6px 0} .ins button{font-size:12px;padding:4px 12px;color:var(--muted)} .rough{width:100%;box-sizing:border-box;margin-top:8px;font:inherit;font-size:13px; @@ -754,6 +760,23 @@ + '">+ Add a scene ' + (after === "start" ? "at the start" : "after " + esc(after)) + ''; } + // The faults themselves, with the prompt change that would prevent each - + // which is the half that makes the check actionable rather than a verdict. + function faultsHtml(s) { + var vc = s.vision_check; + if (!vc || !(vc.faults || []).length) return ""; + return '
' + + (vc.summary ? '
' + esc(vc.summary) + '
' : '') + + vc.faults.map(function (f) { + return '
' + esc(f.kind || "") + '' + + (f.at != null ? ' at ' + Number(f.at).toFixed(1) + 's' : '') + + ' · ' + esc(f.what || "") + + (f.prompt_fix ? 'fix: ' + esc(f.prompt_fix) + + '' : '') + '
'; + }).join("") + '
'; + } + function shotHtml(s, voice) { if (s.writing) { return '
' + esc(s.id) + '
' @@ -799,6 +822,21 @@ + ''; } + // What the eyes found, if they have looked. Kinds: render (the picture is + // broken), continuity (the frames disagree), script (wrong shot, well made). + var vc = s.vision_check || null; + var eyeHtml = ""; + if (vc && vc.verdict) { + var bad = vc.verdict === "broken"; + var faults = vc.faults || []; + eyeHtml = 'picture ' + esc(vc.verdict) + + (faults.length ? ' · ' + faults.length + ' fault' + + (faults.length === 1 ? '' : 's') : '') + + (vc.people_on_screen != null ? ' · ' + vc.people_on_screen + + ' on screen' : '') + ''; + } + var tools; if (s.drawing) tools = 'drawing…'; else if (s.filming) tools = 'filming…'; @@ -814,7 +852,7 @@ + (s.opening_url ? 'Redraw' : 'Draw') + ' · $0.14' + (s.opening_url ? '' : '') - + chkHtml + + chkHtml + eyeHtml + ''; } @@ -830,6 +868,7 @@ + (s.camera ? '

camera: ' + esc(s.camera) + '

' : '') + (s.continuity ? '

continuity: ' + esc(s.continuity) + '

' : '') + lines + + faultsHtml(s) + '
' + tools + '
' + '