Refreshing the widget directly from the setter raced when a setting was flipped and flipped back quickly: two concurrent updateAll calls could coalesce around a stale read and leave the widget on the intermediate value. Observe the agenda-widget-range and week-start prefs instead and push a single debounced updateAll once changes settle, so the widget always converges to the final value. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>