Skip to content

feat(studio): flat inspector — Grade (color grading) group#2124

Open
vanceingalls wants to merge 11 commits into
studio-flat-04-mediafrom
studio-flat-05-grade
Open

feat(studio): flat inspector — Grade (color grading) group#2124
vanceingalls wants to merge 11 commits into
studio-flat-04-mediafrom
studio-flat-05-grade

Conversation

@vanceingalls

@vanceingalls vanceingalls commented Jul 10, 2026

Copy link
Copy Markdown
Collaborator

What

Fifth PR in a 6-PR stack for the flat inspector redesign (see #2120 for the foundation and full stack list). Adds the flat Grade group — the largest group in the series (Preset + Custom LUT, 10 bipolar Adjust sliders, Vignette + Grain with a tuned-settings sub-panel, Blur + Pixelate, an HDR source warning banner, and an Apply-to-scope row) — wired into the accordion.

Stack: #2120 (Foundation+Text) → #2121 (Style) → #2122 (Layout+Motion) → #2123 (Media) → #2124 (this) → #2125 (Pinning + multi-field Text).

Why

Color grading is the most content-heavy legacy section (14+ controls) and needed new primitive extensions (bipolar sliders with a reset affordance, select rows with a label distinct from their value) that this PR builds and the rest of the stack could have reused.

How

  • useColorGradingController extracted from the legacy ColorGradingSection so the new flat header accessory (compare/status/reset) and body can share state without duplicating it.
  • FlatSlider extended with centerTick/onReset for bipolar controls (Adjust sliders, Vignette Roundness) — a mid-task fix round corrected a regression where the new reset-slot column was unconditionally reserved, shrinking the track width of six pre-existing unipolar sliders elsewhere in Style/Media; now gated on centerTick so only bipolar rows get it.
  • FlatSelectRow widened to support {value, label} options (Preset dropdown's id vs. display name).
  • The legacy ColorGradingSection is intentionally retained rendering alongside the new flat group for now (same hybrid-migration pattern used for every group in this stack until the whole redesign lands) — flagged in the whole-branch review as a known, flag-gated-only follow-up to fully retire once this series ships.
  • Still behind STUDIO_FLAT_INSPECTOR_ENABLED (default off).

Test plan

  • Every slider/row/toggle has a real DOM-event test (pointerdown drag, reset click, select change) with exact committed-value assertions — several were caught missing during task review and added before merge.
  • Full monorepo suite green; oxlint/oxfmt/fallow clean (a real pre-existing branch-wide fallow gate failure, unrelated to this PR's own diff, was found and fixed via documented .fallowrc.jsonc exemptions).
  • Unit tests added/updated
  • Manual testing performed
  • Documentation updated (not applicable — internal Studio UI behind an off-by-default flag)

vanceingalls commented Jul 10, 2026

Copy link
Copy Markdown
Collaborator Author

@miga-heygen miga-heygen left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed as part of the 15-PR edit-panel redesign stack. Full stack review posted on #2120. No blockers on this PR. — Miga

vanceingalls and others added 11 commits July 10, 2026 18:28
Review of Task 6 flagged the exposure/other-key scale ternary as always
resolving to 100 on both arms.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Also hoists the pointerdown-drag/reset-click test scaffold shared by the
new Roundness tests and the existing Contrast/Exposure tests into helpers
(findRowByText/dragSliderTrack/clickSliderReset), and exempts pre-existing,
branch-inherited fallow findings unrelated to this task (TextFieldEditor
complexity from earlier Text-inspector commits; test-scaffold duplication
across four flat-inspector-series test files from Plans 2-4) via
.fallowrc.jsonc, per this repo's established convention for line-shift/
inherited findings.

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

Also adds a not-busy click assertion for the Apply button so
onApplyToScope is exercised end-to-end, not just its disabled state.

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

@miguel-heygen miguel-heygen left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Final current-head pass: a9409d1. Reviewed the stack boundaries and current diff against the flat-inspector contracts; required checks have no failures/pending checks and no unresolved review threads remain. No new drift found; residual notes are non-blocking.

@vanceingalls vanceingalls force-pushed the studio-flat-05-grade branch from a9409d1 to dfdc68a Compare July 11, 2026 01:34
@vanceingalls vanceingalls force-pushed the studio-flat-04-media branch from 4b9c3cf to 523c461 Compare July 11, 2026 01:34

@miguel-heygen miguel-heygen left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Superseding earlier approval: the latest max-review pass found confirmed correctness issues in this flat-inspector stack (identity/selector-index state, hide-all write races, timing inference, slider pointer/keyboard/reset semantics, and duplicate React keys). Hold merge and require fixes plus re-review on the current stack head.

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.

3 participants