server/internal/services/settings.go SaveSettings takes alerts and email as required (non-pointer) values and writes them unconditionally - absent fields would blank stored settings, not just leave them alone. onLocalLoginChange was building its payload from the stale loaded settings object instead of the in-progress form state (thresholdMinutes/logRetentionDays) that handleSubmit uses, so editing the offline threshold and then flipping the toggle silently reverted the edit. Both paths now submit the same in-progress values.