6a46b1ffe4
Backend sync effect (useEffect mount) was unconditionally replacing mgr.presets with data.presets, destroying: - Frontend-only default presets (12 vs backend's 7) - User-defined presets in localStorage not yet synced to backend Fix: merge backend presets by id — keep all local presets, append any backend presets whose id doesn't exist locally. User presets + frontend defaults are never lost.