Commit Graph

8 Commits

Author SHA1 Message Date
Melbar a275b2efb6 Retune weak multi-shot segment phases 2026-05-09 05:10:38 +02:00
Melbar 7ffe4adc3b Auto-update cutter report 2026-05-08 09:10
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-08 09:10:33 +02:00
Melbar 64e0132cc7 Upgrade CUTTER_REPORT: Frame-Locked Compare, full metadata, auto-commit+push
generate_cutter_report.py:
- Frame-Locked Compare video (trailer left / source right, single MP4) per
  beat replaces two separate side-by-side clips; rendered via accurate
  double-seek + black-fill segmented source reconstruction
- Generation timestamp now includes HH:MM:SS (Uhrzeit-Angabe)
- Per-beat segment list for multi-shot beats (TC, duration, offset, scene,
  score per segment)
- Score warning badge (yellow) if score < 0.65
- python cli.py rematch --beat N command hint in every card
- Overview table links to each beat card via #anchor
- Cleaner dark/light CSS using design tokens (--fg/--bg/--card/--bd)
- --no-clips flag (replaces --with-clips; default is now with clips)

cli.py:
- _auto_commit_push_reports(): after every report regeneration, stages the
  report output files (CUTTER_REPORT.*, output/cutter_clips/, output/report/)
  and auto-commits + pushes to origin/main so remote is always current
- Removed the legacy match_report.html call from _regenerate_cutter_report
  (CUTTER_REPORT now supersedes it)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 07:39:02 +02:00
Melbar 4afb438a4d Beat 15: phase-correct coffee in-point to 2618.80s (scene 309, 00:45:27)
Actor-focused multi-frame temporal scan showed the correct action phase
(left woman back to camera, right woman in profile) at t=2618.8s vs
the previously used 2615.5s where both women were in different positions.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 07:26:25 +02:00
Melbar a7b103b4fe Beat 15: correct knife match to scene 17 (t=130.32s) + coffee to scene 309 (t=2615.52s)
Template scan of entire source found the knife/letter-opener close-up at
t=130-133s in the film (scene 17, 127.76-133.04s).  Previous wrong match was
pointing at scene 309 (the coffee/window scene) for both shots because the
strong continuity seed from beat 14 overwhelmed the global search.

Two-segment provisional match written to cache manually:
  seg[0] knife: scene 17  in=130.32s  dur=2.80s  score=0.72 (confirmed)
  seg[1] coffee: scene 309 in=2615.52s dur=1.28s  score=0.38 (provisional)

Regenerated CUTTER_REPORT and match_report with correct beat 15 clips/stills.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-06 00:05:59 +02:00
Melbar 223789eafc Re-match Beat 15 as multi-shot in scene 309
Beat 15 (4.40 s, two women + coffee mugs + snowy window) was matched as a
single 4-second clip at scene 309 in=2626.93 s, score 0.531. The trailer
beat actually contains two shots split by an internal cut at offset 3.12 s,
and the previous match approximated both with the same continuous span,
landing at the wrong phase for the second sub-shot.

After `match --beat 15 --vision` with the per-shot pipeline:
  Shot 1 (offset 0.32, dur 2.80 s): scene 309 in=2626.929 score 0.531
  Shot 2 (offset 3.12, dur 1.20 s): scene 309 in=2607.254 score 0.608

Same scene, but the second shot is now placed earlier in the source where
the leopard-print woman enters the frame — the right phase for that sub-
shot. Other beats unchanged (0 diffs verified against bak).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-05 10:04:56 +02:00
Melbar 2a3840e528 Fix cutter-report clip duration: render full beat / match length
Bug: the report rendered every preview clip at most 3 s, so any beat longer
than 3 s (e.g. beat 02 at 8.56 s) only got a fragment in the cutter report
and looked wrong. The hard 3 s cap was an early prototype constant that
silently truncated normal-length beats.

Trailer clip is now the full beat duration so the cutter sees the entire
reference beat. Source clip is the full matched duration (may be shorter
than the beat when the match drops before the beat ends — that's correct,
the cutter needs to see exactly the matched span).

A 30 s safety cap stays as a guard against runaway durations but it should
never trip on a normal trailer beat.

All existing clips were dropped and re-rendered so the report on disk
matches the new logic.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-04 22:31:40 +02:00
Melbar f57bd6a669 Track cutter stills and clips in repo, always render with clips
- cli.py auto-regen now produces video clips on every match (no opt-in
  flag). Best presentation comes first; speed cost (~minutes per match)
  is accepted.
- output/cutter_stills/ and output/cutter_clips/ are no longer gitignored.
  All 45 stills and 45 short MP4 previews are committed alongside the
  CUTTER_REPORT.{md,html} so the remote repo always shows the current
  state — even when the report files are inspected without running the
  generator.
- Other output/ contents (FCPXML, EDL, debug folders, HTML report) stay
  ignored.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-04 13:36:20 +02:00