fix(studio): Style/Grade/Text parity gaps found in legacy-retirement audit#2127
fix(studio): Style/Grade/Text parity gaps found in legacy-retirement audit#2127vanceingalls wants to merge 4 commits into
Conversation
|
Warning This pull request is not mergeable via GitHub because a downstack PR is open. Once all requirements are satisfied, merge this PR as a stack on Graphite.
This stack of pull requests is managed by Graphite. Learn more about stacking. |
miga-heygen
left a comment
There was a problem hiding this comment.
Reviewed as part of the 15-PR edit-panel redesign stack. Full stack review posted on #2120. No blockers on this PR. — Miga
…ail in flat Grade
…ofocus in flat Text Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
miguel-heygen
left a comment
There was a problem hiding this comment.
Final current-head pass: fa4d579. 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.
fa4d579 to
605f435
Compare
cabe45e to
40487ac
Compare
miguel-heygen
left a comment
There was a problem hiding this comment.
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.

What
Eighth PR in the flat inspector stack (see #2120 for the foundation and full stack list). Fixes 13 real functional gaps between the flat groups and the legacy components they replace — found by a thorough control-by-control audit (not just section-label matching) run after the legacy Style/Grade retirement (#2126) made these gaps directly user-visible for the first time.
Stack: #2120 → #2121 → #2122 → #2123 → #2124 → #2125 → #2126 → #2127 (this).
Why
The audit found these were pre-existing since each group was first built — the retained legacy sections (removed in #2126) had been silently covering for them the whole time. Two were hard drops (stroke color completely uneditable; per-corner border-radius unreachable from a uniform starting value) and one was a real behavioral bug (color grading sliders don't revive a grade parked at 0% strength, so edits look invisible). The rest were narrower gaps (unclamped/unenumerated stroke inputs, a missing uniform mask-inset slider, keyboard/blur safety on the grade compare button, HDR banner detail text,
text-transform: capitalizeunreachable,text-align: endunselectable, Size losing live-commit, Content textarea losing auto-focus, and non-numbered empty-field labels).How
Three independent commits, each fixing one group's gaps against its legacy source of truth:
propertyPanelFlatStyleSections.tsx): stroke color now editable via aColorFieldrow; stroke width clamped 0–200px; stroke style validated against the 10 legacy options and exposed via a discoverable dropdown; per-corner radius now always reachable (deleted the dead branch that only mountedBorderRadiusEditorfor already-non-uniform elements — it has its own unlink toggle and now always renders, matching legacy); restored the uniform mask-inset slider alongside the per-side fields.propertyPanelFlatColorGradingSection.tsx): added avisibleIntensityhelper (identical to legacy) threaded into every Adjust/Vignette/Grain/Blur/Pixelate/LUT commit handler so editing a grade parked at 0% strength revives it to visible — the strength slider's own commit and preset application are correctly left untouched; the compare/hold button gained keyboard activation (Space/Enter) and window-blur release safety; the HDR banner and status indicator regained their informational detail text.propertyPanelFlatTextSection.tsx, multi-field path): added the missingcapitalizecase option; aliasedtext-align: endonto the "right" button (matching how "start" already aliases onto "left"); restored live-commit on the Size field; wiredkey+autoFocusso switching or adding a text field focuses its Content textarea, matching legacy; empty fields now show a numbered "Text 1"/"Text 2" fallback instead of an indistinguishable bare "Text".All three legacy source files (
propertyPanelStyleSections.tsx,BorderRadiusEditor.tsx,propertyPanelColorGradingSection.tsx,propertyPanelColorGradingControls.tsx,propertyPanelSections.tsx) were read-only references — none were modified; they're still used by the non-flat legacy panel.Test plan
oxlint/oxfmt/fallowclean on every commit.