mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-11 02:46:16 -08:00
Settings live in the renderer's IndexedDB. Two failure modes made them look saved while nothing reached disk: - A second app instance sharing the same userData directory cannot take the Chromium storage lock, so its renderer reads defaults and every write is dropped. The app now holds a single-instance lock and focuses the running window instead of starting a rival copy. The lock is requested after the userData override so E2E runs with their own data dir keep independent locks, and after Squirrel event handling. IPTVNATOR_ALLOW_MULTIPLE_INSTANCES=1 opts out for local CDP debugging. - updateSettings() patches in-memory state before persisting and onSubmit() had no rejection handler, so a failed write produced an unhandled rejection and no user-visible feedback. SettingsStore now records which half of the round-trip failed and the settings page surfaces it via a dismissible error snackbar; the dialog stays open on failure so the save can be retried. Closes #1156 Closes #102 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>