diff --git a/app/src/components/EffectsTab/EffectsDetail.tsx b/app/src/components/EffectsTab/EffectsDetail.tsx
index 73be3113..f877c914 100644
--- a/app/src/components/EffectsTab/EffectsDetail.tsx
+++ b/app/src/components/EffectsTab/EffectsDetail.tsx
@@ -142,6 +142,29 @@ export function EffectsDetail() {
}
}
+ async function handleSaveExisting() {
+ if (!selectedPresetId || !name.trim()) return;
+ setSaving(true);
+ try {
+ await apiClient.updateEffectPreset(selectedPresetId, {
+ name: name.trim(),
+ description: description.trim() || undefined,
+ effects_chain: workingChain,
+ });
+ queryClient.invalidateQueries({ queryKey: ['effect-presets'] });
+ queryClient.invalidateQueries({ queryKey: ['effect-preset', selectedPresetId] });
+ toast({ title: 'Preset updated' });
+ } catch (error) {
+ toast({
+ title: 'Failed to save',
+ description: error instanceof Error ? error.message : 'Unknown error',
+ variant: 'destructive',
+ });
+ } finally {
+ setSaving(false);
+ }
+ }
+
async function handleSaveAsNew() {
await handleSaveNew();
}
@@ -186,16 +209,27 @@ export function EffectsDetail() {
{!isBuiltIn && !isCreatingNew && (
-
+ <>
+
+
+ >
)}
{isCreatingNew && (