v0.21.0
Highlights
Scheduled tasks — Airut can now run tasks on a cron schedule without any external trigger. Define a schedule in your server config with a cron expression, a prompt or trigger script, and an email recipient — Airut handles the rest. Two modes are supported: prompt mode runs Claude with a fixed prompt on each fire, and script mode runs a command first and only invokes Claude when there's output to analyze or a failure to investigate. Results are delivered via email with full reply-back support, so you can respond to a scheduled task's output and continue the conversation. (#466, #467, #468, #472, #475, #476)
As an example, the repo includes a CI trigger script (scripts/ci_trigger.py) that runs local CI checks on a schedule — on failure it generates a prompt for Claude to diagnose the issue and open a fix PR, on success it exits silently. (#469)
Bug Fixes
- Config editor nested field diffs — Fixed
_expand_item_fields()usingleaf.nameinstead ofleaf.pathfor keyed collection items with nested dataclass fields (e.g. signing credentials). Diff output now shows the correct full path and values. (#465)
Security
- Pygments upgrade — Upgraded Pygments 2.19.2 → 2.20.0 to fix GHSA-5239-wwwm-4pmq (low-severity ReDoS in ADL lexer). (#470)