mirror of
https://github.com/gesellix/Bose-SoundTouch.git
synced 2026-08-18 08:36:13 +00:00
Third piece of #591. --update-check-enabled/--update-check-interval (UPDATE_CHECK_ENABLED/UPDATE_CHECK_INTERVAL), default off/24h, following the same local main.go flag pattern as discovery-enabled — not pkg/config, which soundtouch-service doesn't import at all (correction to the issue's proposed location, see the design doc). Background goroutine modeled on startDeviceDiscovery: startup jitter (0-5min), skips the immediate check if the persisted last-check is still fresh, backs off retries to no sooner than 1h after a failure, logs once per newly-detected version. The decision logic (shouldCheckImmediately, shouldSkipDueToBackoff, logUpdateIfNewlyAvailable) is split into pure, directly-testable functions rather than living inline in the goroutine. Server gets a SetUpdateChecker/UpdateCheckResult pair (nil-safe) so the next two pieces (announcement, /api/setup/version) can read the current state without importing updatecheck's construction details. Manually verified against a running instance: enabled via flags, no panic, service stays responsive (jitter means the actual first check can take up to 5 minutes to fire, so this only confirms the wiring, not a live GitHub response — that's covered by the previous commit's httptest-backed unit tests). Refs #591