Skip to content

Roll Analysis: merge Batch and Roll into one searchable panel - #1110

Draft
PabloRuizCuevas wants to merge 2 commits into
marcinz606:mainfrom
PabloRuizCuevas:feat/roll-analysis-redesign
Draft

PabloRuizCuevas wants to merge 2 commits into
marcinz606:mainfrom
PabloRuizCuevas:feat/roll-analysis-redesign

Conversation

@PabloRuizCuevas

@PabloRuizCuevas PabloRuizCuevas commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

Summary

Merges Batch Analysis and Roll into one searchable panel — no more BATCH/ROLL subtitles to disambiguate two flows that both boiled down to "pick a baseline, apply it" — then carries Batch Analysis' own Lock Bounds handling to where it belongs.

  • A searchable roll picker (SearchableGearCombo) replaces the plain "Select Roll…" combo and the separate magnifying-glass Batch Analysis button.
  • Current Roll (the default entry) re-scans the loaded files; a saved name loads its stored baseline. One primary Apply button runs whichever is picked.
  • Use Luma/Color Average moves below the picker+Apply row.
  • Save/Delete stay; Delete disables on Current Roll, and Save rejects that name to avoid shadowing the picker's built-in entry.
  • Lock Bounds now actually exempts a frame from Batch Analysis: a locked frame's stored floors/ceilings are left untouched on every re-run, instead of being silently re-enabled and overwritten.
  • Batch Analysis reports which frames were trimmed out of the pooled interquartile-mean baseline on any channel. A trimmed frame still takes the roll average like everyone else — this is a report, not an exemption — but the status line now names it, since that frame's own measurement is, by construction, the furthest from the baseline about to land on it.

docs/USER_GUIDE.md (§4.3–4.4) and docs/PIPELINE.md are updated to match, along with the onboarding tutorial's Roll Analysis / Crosstalk steps.

Testing

  • uv run ruff check .
  • uv run ty check — no new diagnostics versus origin/main
  • uv run pytest -q — full suite passes; only failure is the pre-existing tests/test_metadata_presets.py::TestPresetNames::test_load_tooltip_follows_a_rebinding
  • tests/test_roll_sidebar.py, tests/test_batch_norm_wb.py, tests/test_controller.py, tests/test_section_help_dialog.py, tests/test_section_guides.py specifically cover the panel and the Lock Bounds/outlier fix

🤖 Generated with Claude Code

PabloRuizCuevas and others added 2 commits September 17, 2026 17:02
Batch Analysis and Roll into one section, no BATCH/ROLL subtitles. A
searchable roll picker (SearchableGearCombo) replaces the plain "Select
Roll…" combo and the magnifying-glass Batch Analysis button: Current
Roll (default) re-scans the loaded files, a saved name loads its
stored baseline, and one primary Apply button runs whichever is
picked. Use Luma/Color Average move below the picker+Apply row. Save
and Delete stay; Delete disables on Current Roll, and Save rejects
that name to avoid shadowing the picker's built-in entry.

Updates docs/USER_GUIDE.md §4.4 and the onboarding tutorial's Roll
Analysis / Crosstalk steps to match.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
…report outliers

Batch Analysis pools every frame's own black/white points into a
roll-wide baseline using an interquartile-trimmed mean per channel,
then force-applies that baseline to every frame -- including the ones
just trimmed out of computing it. Those frames get the biggest
mismatch of all: the baseline is, by construction, furthest from
their own measured bounds. A single-channel outlier (e.g. a scene
dominated by one color) shows up as a strong color cast rather than a
uniform exposure shift, since each channel stretches independently.

Two fixes:
- Lock Bounds now actually protects a frame: Batch Analysis skips
  writing the roll baseline onto any frame with lock_bounds set,
  instead of force-re-enabling roll averaging on it every run.
- NormalizationWorker now reports which frames were trimmed out of
  the pooled average on any channel. They still take the roll
  baseline like every other frame -- this is a report, not a silent
  exemption -- but the status line now names them, so the mismatch is
  visible at analysis time instead of found later by eye.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@PabloRuizCuevas
PabloRuizCuevas force-pushed the feat/roll-analysis-redesign branch from c3ff053 to 2622f26 Compare September 17, 2026 10:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant