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
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.
40487ac to
cbbe2ae
Compare
605f435 to
c8d1d59
Compare
miguel-heygen
left a comment
There was a problem hiding this comment.
Re-reviewed exact head c8d1d59a49f059ef0f5ac3bf5a1c067e2930b5d1. The parity audit still introduces/retains two direct correctness issues:
propertyPanelFlatTextSection.tsx:151-161maps logicalstart/endalignment to physicalleft/rightand writes the physical value. That destroys authored logical semantics and is wrong for RTL content.propertyPanelFlatColorGradingSection.tsx:43-56installs global compare-release listeners that are removed only when a release event fires, not on unmount. Changing selection while held leaks stale callbacks against the prior controller.
Preserve Start/End as first-class values (or use direction-aware non-destructive display) and clean all global listeners in effect teardown. Add RTL and unmount-while-held tests.
Verdict: REQUEST CHANGES
Reasoning: The parity layer corrupts logical text alignment and can leak stale global Grade listeners across selection changes.
— Deepwork
…ofocus in flat Text Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
cbbe2ae to
f997ebb
Compare
c8d1d59 to
9e8e27d
Compare
|
Both fixed in PR #2416, commit Logical alignment destroyed: the Align Grade compare-listener leak: New regression tests: |
miguel-heygen
left a comment
There was a problem hiding this comment.
Re-reviewed at 9e8e27d285638743ca06ebcd64a5f3b4db929aa8.
All four incremental commits are byte-equivalent to the previously reviewed head (patch-id 7ece1baf…). Logical start/end alignment still aliases directly to physical left/right (propertyPanelFlatTextSection.tsx:151-162), and the Grade compare gesture still registers global pointer/blur listeners whose cleanup depends on a release event rather than component unmount (propertyPanelFlatColorGradingSection.tsx:43-57). The ancestor replacement surfaces also remain blocked.
Verdict: REQUEST CHANGES
Reasoning: No requested logical-alignment or listener-lifecycle fix landed; this is only a rebase of the blocked patch.
— Deepwork
|
Confirming: this PR's own head is unchanged, correctly — the fixes for this review's findings were not squashed backward into it. They land in PR #2225 and PR #2416, which sit directly on top of this PR in the same Graphite stack ( This is a stacked-PR review gate question, not a missing-fix question: the stack is merged bottom-up in one sitting via Graphite ( Evaluating each intermediate head against "is this correct if it were the final merged state" doesn't match how the stack actually ships. Could you review mergeability at the stack tip (#2416, which contains every fix) rather than blocking each intermediate PR on findings that are already resolved a few commits further up the same stack? Happy to walk through the specific commit that fixes any finding you want re-verified at the tip. |

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.