c2168afbf0
gocron v2's WithLocation is a SchedulerOption (process-wide), not a JobOption — there's no per-job location knob. To get per-user timezones we use a cron expression with the CRON_TZ= prefix, which the underlying robfig/cron parser honors: CRON_TZ=America/New_York 0 3 * * * Fires at 03:00 in the named zone every day. Same DST-correctness as the original WithLocation approach. Fall-back to UTC moves inline (was validateTimezoneOrUTC); kept the helper because the test file still exercises it. Caught by go vet on CI after slice 2 pushed: "cannot use gocron.WithLocation(loc) (value of type gocron.SchedulerOption) as gocron.JobOption value" Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>