Fixed
- Compose per-service
notify_on_failure/notify_on_successoverrides now reach notifications. A[compose.<alias>.<svc>]notify list was parsed and discarded; it now desugars into a notify route keyed by the imported service’s task name, exactly like[services.*]. See Compose. - Retention skips non-terminal runs. Age- and count-based cleanup now only prunes runs that have ended, so a run still pending or running is never removed while in flight. See Retention.
- Catch-up honors a task’s timezone. Missed-tick detection at startup evaluates each task’s schedule in its own timezone (or the scheduler default) instead of the host’s local zone. See Missed runs.
- Non-service
restartbackoff now escalates. Consecutive restarts of a non-service task apply the configuredrestart_backoffcurve instead of repeating at the flat base delay. See Tasks. - Negative
timeout,retry_delay, andrestart_delayare rejected at config load instead of being silently ignored. See Tasks. docker composeavailability is re-probed after a transient failure, so a task using compose is no longer disabled for the daemon’s lifetime when the first probe fails while Docker is still starting.- A malformed Docker build response stream now fails the build rather than spinning on the undecodable bytes.
- A container start cancelled mid-flight no longer leaks its container or image — cleanup runs on a context detached from the cancelled run.
- Terminal events for runs that never execute are published off the runtime lock, removing a re-entrancy deadlock reachable on skip-overlap, queue-full, catch-up, and DST-fallback paths.
- Assorted concurrency fixes in run event publishing, the notification ingress path and outbound coalescer shutdown, and the cloud execution-update buffer and reconnect backoff.
- Log search now handles non-ASCII task output correctly, and the cursor-based result window advances past the first 50 runs.
- Shell tasks no longer receive the daemon’s own internal environment variables (
RUNWISP_*), matching the container and compose backends. - Cloud log-archive uploads now validate the destination URL before connecting.
- An unrecognized system timezone now falls back to UTC instead of failing daemon startup.
- Byte-size parsing now rejects non-finite and overflowing values.
- Rate-limited notification channels now clamp their
Retry-Afterwait to the backoff budget. - Concurrent notification publish and unsubscribe no longer race.
- Restoring soft-deleted runs by filter now returns only the rows it restored.
- v1.5.1 latest
- v1.5.0
- v1.4.0
- v1.3.1
- v1.3.0
- v1.2.0
- v1.1.0
- v1.0.1
- v1.0.0
- v0.16.4 pre
- v0.16.3 pre
- v0.16.2 pre
- v0.16.1 pre
- v0.16.0 pre
- v0.15.1 pre
- v0.15.0 pre
- v0.14.0 pre
- v0.13.2 pre
- v0.13.1 pre
- v0.13.0 pre
- v0.12.0 pre
- v0.11.0 pre
- v0.10.0 pre
- v0.9.0 pre
- v0.8.0 pre
- v0.7.0 pre
- v0.6.0 pre
- v0.5.0 pre
- v0.4.0 pre
- v0.3.0 pre
- v0.2.0 pre
- v0.1.2 pre
- v0.1.0 pre