Problem
Plugin preset/project state persistence is incomplete. VST3 state manager exists but is only referenced by tests, VST3 preset actions are mostly UI state, native state commands are not exposed through Tauri, and WAM instances live in a non-persisted store.
Root Cause
Plugin runtime state and project persistence were implemented in separate layers without a unified project serialization contract.
Solution
- Define project schema for VST3/WAM instances, parameters, bypass, order, and state blobs.
- Wire VST3 state save/load through bridge/Tauri where applicable.
- Persist WAM instance state and restore on project load.
- Add migration/backward compatibility for projects without plugin state.
Verification
- Add save/reload tests for VST3 and WAM plugin chains.
- Add E2E project reload scenario with plugin state preserved.
- Verify missing plugin handling is user-visible and non-destructive.
Files to Touch
src/services/vst3bridge/VST3StateManager.ts
src/store/vst3Store.ts
src/store/wamStore.ts
src/types/project.ts
src/services/projectStorage.ts
src-tauri/src/commands/plugin.rs
Problem
Plugin preset/project state persistence is incomplete. VST3 state manager exists but is only referenced by tests, VST3 preset actions are mostly UI state, native state commands are not exposed through Tauri, and WAM instances live in a non-persisted store.
Root Cause
Plugin runtime state and project persistence were implemented in separate layers without a unified project serialization contract.
Solution
Verification
Files to Touch
src/services/vst3bridge/VST3StateManager.tssrc/store/vst3Store.tssrc/store/wamStore.tssrc/types/project.tssrc/services/projectStorage.tssrc-tauri/src/commands/plugin.rs