Skip to content

Commit 36c4415

Browse files
adewaleclaude
andcommitted
fix: TypeScript errors for CI compatibility
- Exclude 'bypass' from updateEffect generic to fix spread type error - Fix mock type annotation in Transport-xypad-sync.test.tsx 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 5a790aa commit 36c4415

File tree

3 files changed

+10
-7
lines changed

3 files changed

+10
-7
lines changed

app/src/components/EffectsPanel.tsx

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -85,17 +85,18 @@ export function EffectsPanel({
8585
}
8686
}, []);
8787

88-
// Update a single effect parameter
89-
const updateEffect = useCallback(<K extends keyof EffectsState>(
88+
// Update a single effect parameter (excludes 'bypass' which is boolean, not an object)
89+
const updateEffect = useCallback(<K extends Exclude<keyof EffectsState, 'bypass'>>(
9090
effectName: K,
9191
param: keyof EffectsState[K],
9292
value: number | string
9393
) => {
9494
setEffects(prev => {
95+
const prevEffect = prev[effectName] as Record<string, unknown>;
9596
const newEffects = {
9697
...prev,
9798
[effectName]: {
98-
...prev[effectName],
99+
...prevEffect,
99100
[param]: value,
100101
},
101102
};

app/src/components/Transport-xypad-sync.test.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ vi.mock('../audio/engine', () => ({
3838
* It asserts the CORRECT behavior: XY pad should update BOTH wet and decay.
3939
*/
4040
describe('Transport XY Pad Sync - EXPECTED BEHAVIOR', () => {
41-
let onEffectsChange: ReturnType<typeof vi.fn>;
41+
let onEffectsChange: (effects: EffectsState) => void;
4242
let capturedEffects: EffectsState[] = [];
4343

4444
beforeEach(() => {
@@ -104,7 +104,7 @@ describe('Transport XY Pad Sync - EXPECTED BEHAVIOR', () => {
104104
});
105105

106106
describe('Transport XY Pad Sync - FIXED BEHAVIOR', () => {
107-
let onEffectsChange: ReturnType<typeof vi.fn>;
107+
let onEffectsChange: (effects: EffectsState) => void;
108108
let capturedEffects: EffectsState[] = [];
109109

110110
beforeEach(() => {

app/src/components/Transport.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -90,16 +90,18 @@ export function Transport({
9090
}, []);
9191

9292
// Update a single effect parameter - syncs to server immediately
93-
const updateEffect = useCallback(<K extends keyof EffectsState>(
93+
// Excludes 'bypass' which is boolean, not an object with params
94+
const updateEffect = useCallback(<K extends Exclude<keyof EffectsState, 'bypass'>>(
9495
effectName: K,
9596
param: keyof EffectsState[K],
9697
value: number | string
9798
) => {
9899
// Compute new effects state
100+
const currentEffect = effects[effectName] as Record<string, unknown>;
99101
const newEffects = {
100102
...effects,
101103
[effectName]: {
102-
...effects[effectName],
104+
...currentEffect,
103105
[param]: value,
104106
},
105107
};

0 commit comments

Comments
 (0)