Repository navigation
v0.3.0
What's New
macOS launchd timezone support
Tasks configured with a non-local timezone (e.g., timezone: "UTC") now fire at the correct time on macOS. Previously, launchd's StartCalendarInterval ignored the timezone field entirely, causing tasks to fire at the wrong hour.
How it works:
- At registration time,
CalendarIntervalvalues are converted from the target timezone to system-local time usingIntl.DateTimeFormat - A daily auto-sync launchd job (
com.claude-scheduler.tz-sync) is registered alongside any timezone-aware task, catching DST transitions automatically - The existing
synccommand recalculates timezone offsets on every run
Example: A task scheduled for 0 7 * * 1-5 with timezone: "UTC" on a system in America/Toronto (EDT, UTC-4) now correctly registers as Hour: 3 in the plist instead of Hour: 7.
Known limitation
Day-of-month schedules where the timezone offset crosses a day boundary use an approximate day (clamped to 1–28) with a logged warning. This is a fundamental limitation of launchd's CalendarInterval which has no native timezone support.
No changes to Linux
The Linux crontab scheduler is completely unaffected — it already handles timezones natively via the TZ= environment variable.
Full Changelog: v0.2.1...v0.3.0