v0.1.0
Initial release. acron is a command-line runtime that schedules unattended agent runs across systemd (Linux) and launchd (macOS), staying in the runtime path so every firing gets uniform supervision: overlap prevention, timeout, and log capture with run history.
Added
- Wrapper execution model: the generated OS unit runs
acron run <job>, which supervises each firing in-process rather than launching the agent directly (#1, #3, #6). - Declarative single-file config: all Jobs live in one TOML file (default
~/.config/acron/config.toml, overridable viaACRON_CONFIG), withacron config showand a validating, template-seededacron config editto inspect and modify it (#11, #43). acron applyreconciles the OS scheduler units to the config and auto-prunes acron-owned units no longer declared;acron destroytears them down while leaving the config intact (#17, #36, #42).acron statusreports each Job's apply state (applied / drifted / unapplied / orphaned / disabled) alongside its latest run, with next-fire and relative-time columns (#17, #24, #32, #39).acron trigger <job>fires a Job once, immediately and out of schedule, through the same lock, condition, timeout, and history as a scheduled firing (#21).- Cron schedules with lists, ranges, and steps, named-field forms, and POSIX OR-semantics when both day-of-month and day-of-week are set (#10, #14, #18, #33).
- Optional condition command run before the agent at fire time; a firing it drops is recorded as a
skippedrun, and a broken condition is surfaced rather than silently swallowed (#12, #16, #55). - Run history in
history.jsonl:acron historyshows an interleaved timeline across all Jobs, including in-flight runs (#25, #48, #52). acron logsselects and prints a run's log and follows a live run (#20, #29, #35).acron showprints a Job's generated unit and any drift;acron apply --dry-runpreviews the change as a git-style diff (#37, #40, #42).acron runresolves and reports the command it invokes, reports aninterruptedstatus on Ctrl-C, and exits cleanly (#50, #58, #83).- Per-Job environment propagation with override merging, and the working directory as a first-class field (#61, #62).
- Shell completion for job names, with cwd hints and install instructions (#45, #49, #53).
- Long help text and examples across the command set (#77, #78, #79, #80, #82, #87).
- Version stamped via ldflags at release, with a module-version fallback for
go installbuilds (#70, #81, #89).