pub async fn update_settings(
scheduler: State<'_, Scheduler>,
supporter_state: State<'_, SupporterAppState>,
new: Settings,
) -> Result<(), String>Expand description
Replace the active profile’s settings with new and persist.
Hook fields are stripped from the payload before merge (see
strip_hooks) — hooks must go through set_hooks so the user
confirmation dialog can fire. custom_css is gated the same way:
non-supporters can’t change it (we substitute the previously-persisted
value), and the value gets sanitised + clamped before write.
Returns when the write hits disk.