diff --git a/packages/client/src/components/Workshop.jsx b/packages/client/src/components/Workshop.jsx index 6a5b819..160aae9 100644 --- a/packages/client/src/components/Workshop.jsx +++ b/packages/client/src/components/Workshop.jsx @@ -1,8 +1,8 @@ import React, { useState, useEffect, useCallback } from 'react'; import { workshop as workshopApi } from '../services/api.js'; import { useAuth } from '../services/AuthContext.jsx'; -import { state, deserialize, emit } from '../engine/state.js'; -import { stopAudio, rebuildGraph } from '../engine/audioEngine.js'; +import { state, deserialize } from '../engine/state.js'; +import { rebuildGraph } from '../engine/audioEngine.js'; import { getPresets } from '../engine/presets.js'; const TAGS = ['ambient', 'bass', 'drums', 'pad', 'lead', 'fx', 'chiptune', 'experimental']; @@ -171,14 +171,11 @@ export default function Workshop({ onSwitchToSandbox, onSwitchToGame, onSwitchTo const handleLoad = (patch) => { if (!patch.data) return; - // Stop audio, clean state, then load - if (state.isRunning) stopAudio(); - - // Deep clone to avoid reference issues + // Deep clone and load — same pattern as loadPreset() + // Don't stop audio first: rebuildGraph destroys and recreates all nodes const cleanData = JSON.parse(JSON.stringify(patch.data)); deserialize(cleanData); - rebuildGraph(); - emit(); + if (state.isRunning) rebuildGraph(); onSwitchToSandbox?.(); };