refactor(studio): lift the carve out of the FX section file - #3181
Conversation
9bfbace to
e37e7a6
Compare
1e30acc to
881608d
Compare
terencecho
left a comment
There was a problem hiding this comment.
LGTM. Empirical MOVE verified at 881608dd39b8 — two independent diff exit 0 runs (carve region + Section tail). Byte-identical extraction; only delta is the export keyword. No hook / dep-array / prop changes.
BC preserved via export type { AudioTrackOption } re-export in Section (consumer at propertyPanelAudioFxGroup.tsx:62 still compiles).
Tests untouched — carve is exercised via CSS class selectors (.hf-fx-carve*) and text strings ("Voiceover carve") which are preserved byte-identically. No new pin test needed for a byte-identical move.
OLD-assumption counterfactuals: (a) hook reorder / dep-array change / prop rename — pinned by diff exit 0. (b) AudioTrackOption consumer compiles — pinned by grep + re-export. (c) DOM contract (selectors + strings) — pinned by byte-identity of the extracted region.
CI: Preflight (lint + format) red on 9 pre-existing .md files (README, plans/*.md, skills/hyperframes-audio/*.md) — NONE touched by this PR; base-branch drift. preview-regression red downstream of preflight. regression + player-perf + Detect changes green.
— Review by tai (pr-review)
miga-heygen
left a comment
There was a problem hiding this comment.
Review: refactor(studio): lift the carve out of the FX section file — #3181
Verdict: LGTM
Pure file-extraction refactor with zero behavioral changes. Verified line-by-line:
carveMemberName(),formatParamValue(),paramValueWidthCh(),FxCarveMember,FxCarveModule— all verbatim moves, only change is the requiredexportkeyword onFxCarveModule.AudioTrackOptioninterface re-exported from the original module to preserve the public API for external consumers.- Import housekeeping is correct:
HfAudioFxParam,FxParamRow,formatHzremoved from old file (only used by moved code), added to new file.defaultAudioFxParamscorrectly kept in both (used independently). - No hooks exist in the moved code —
FxCarveModuleandFxCarveMemberare pure render functions receiving all state via props. The extraction cannot change lifecycle behavior.
Ship it.
Review by Miga
🤖 Generated with Claude Code
881608d to
7fa0484
Compare
e37e7a6 to
541af4f
Compare
7fa0484 to
dd65dc1
Compare
541af4f to
62de7db
Compare
dd65dc1 to
70266b3
Compare
62de7db to
34a62df
Compare
70266b3 to
fec5d30
Compare
34a62df to
dceaab8
Compare
# Conflicts: # packages/studio/src/components/editor/propertyPanelAudioFxGroup.test.tsx # packages/studio/src/components/editor/propertyPanelAudioFxGroup.tsx # packages/studio/src/components/editor/propertyPanelFxSection.tsx
# Conflicts: # packages/studio/src/components/editor/propertyPanelAudioFxGroup.test.tsx # packages/studio/src/components/editor/propertyPanelAudioFxGroup.tsx # packages/studio/src/components/editor/propertyPanelFxSection.tsx # skills-manifest.json # skills/hyperframes-audio/SKILL.md # skills/hyperframes-audio/references/attributes.md # skills/hyperframes-audio/scripts/carve.mjs
Fallow audit reportFound 2 findings. Details
Generated by fallow. |
propertyPanelFxSection.tsxwas 992 lines against the studio's 600-line cap. The carve is the one part not about the chain: it owns a source picker, a strength knob and a read-only list of what the analysis produced, none of it shared with an ordinary effect row.Pure move — no behaviour change, no rendered-audio change. Section is 647 lines after this; the effect-row extraction is the next PR.
🤖 Generated with Claude Code