You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Closes out the 2.x sub-phase sequence. Three independent polish items that finish wiring the three settings AppSettings introduced in 2.2 and complete the banner UX 2.3 started.
Periodic re-check timer: UpdateNotificationViewModel now schedules a DispatcherTimer after each Check / Dismiss / Skip, with the interval driven by AppSettings.UpdateCheckCadence. StartupOnly opts out entirely. If the banner is still visible at tick time the recheck is skipped (user is still looking at a previous notification). Tests cover the pure cadence->TimeSpan mapping (UpdateCheckCadenceExtensions); the DispatcherTimer integration itself stays untested per the §10 view-wiring carve-out and the constructor takes a useDispatcherTimer flag so VM tests opt out.
Skip-this-version persistence: AppSettings.SkippedUpdateVersion (nullable string) added in schema v8 with no-op migration. UpdateNotificationViewModel reads it at check time and short-circuits if the detected version matches; the new SkipCommand writes the pending version via the setSkippedVersion callback. Banner gains a third button ('Skip this version'). Skip is per-version: detecting a newer version overwrites the previous skip and surfaces the banner again.
Friendly enum labels in the Settings dialog: new generic EnumDisplayConverter maps AutoUpdateMode and UpdateCheckCadence values to user-facing strings ('Every six hours', 'Notify only (show banner)', etc.). Wired via ItemTemplate on the Updates section's ComboBoxes.
VM constructor signature grew: now takes Func<UpdateCheckCadence>, Func<string?>, Action<string?> alongside the existing Func<AutoUpdateMode>. App.OnStartup hands each one a closure over settingsService.Current.* and settingsService.Update so live setting changes take effect on the next check / skip without recreating the VM. Tests share a NewVm() helper to keep call sites readable.
Tests: 1403 passing (+22). Breakdown: 5 UpdateCheckCadenceExtensions, 11 EnumDisplayConverter, 4 new UpdateNotificationViewModel (skip-match / skip-differ / SkipCommand x2), 2 SettingsService (v7->v8 migration + skip round-trip). 0 warnings, 0 errors in dotnet build -c Release. CHANGELOG [Unreleased] documents the new banner button and the timer.
AI-Local-Session: 4519f6b6-393a-4476-8efa-410e5396c3a9
AI-Cloud-Session: 72f9e474-60ab-42c2-b2a0-28fee827cbbb
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
0 commit comments