github dagu-org/dagu v2.3.0

5 hours ago

Added

  • Slack Bot for AI Agent Interaction: New Slack bot integration enables interacting with the Dagu AI agent directly from Slack channels. (#1785)
  • Telegram Bot for AI Agent Interaction: New Telegram bot integration enables interacting with the Dagu AI agent from Telegram. (#1783)
  • Z.AI (GLM Models) as LLM Provider: Added Z.AI (GLM) as a supported LLM provider for the AI agent. (#1780)
  • DAG-Level Retry Policy: New retryPolicy field on DAGs enables automatic retries with configurable max attempts, interval, and conditions. The scheduler scans for failed runs and auto-retries them based on the policy. (#1774)
  • DAG Auto-Retry Metadata in Run Lists: Auto-retry information (attempt number, remaining retries, original run ID) is now surfaced in DAG run list views. (#1779)
  • params[].eval for DAG Param Defaults: DAG parameters now support an eval field that evaluates an expression to compute the default value dynamically. (#1775)
  • Rich DAG Params with Typed Run Modal: DAG parameters now support inline type definitions (type, default, options, description) rendered as typed controls (text, number, select, checkbox, textarea) in the run modal. (#1770)
  • Catchup Runs Through Enqueue Path: Catchup runs are now routed through the enqueue path with deterministic IDs, ensuring consistency with the normal scheduling flow. (#1772)
  • Auto-Provision Initial Admin User: Initial admin user can now be provisioned via config (auth.builtin.initial_admin) or environment variables (DAGU_AUTH_ADMIN_USERNAME, DAGU_AUTH_ADMIN_PASSWORD), enabling headless deployments without the /setup page. (#1765)
  • Propagate Schedule Time Through DAG Run Lifecycle: The original schedule time is now preserved and propagated throughout the DAG run lifecycle, improving observability for scheduled runs. (#1763)
  • Server-Side Sorting for Doc Tree Sidebar: The document tree sidebar now supports server-side sorting for consistent ordering. (#1759)
  • HashiCorp Vault Integration: New secret provider for HashiCorp Vault, enabling DAGs to fetch secrets from Vault KV stores. (#1757) - Thanks to @dohq
  • Multi-Select, Batch Delete & Keyboard Shortcuts for Doc Tree: The document tree now supports multi-select with Shift/Ctrl clicks, batch delete, and keyboard shortcuts for navigation. (#1756)
  • Helm Chart Repository: Official Helm chart is now published to a Helm repository for easy Kubernetes deployment.

Fixed

  • SSE Connection Stability: Hardened agent chat SSE transport and stabilized multiplexed SSE connection management to prevent dropped events, connection leaks, and improve reconnection reliability. (#1781, #1768)
  • Graceful Shutdown for HTTP Server and Scheduler: Improved graceful shutdown handling to ensure in-flight requests complete and the scheduler stops cleanly. (#1782)
  • DAG Env/Params in Container Env Variables: DAG-level env and params references are now properly resolved in container environment variables. (#1778) - Thanks to @Popo8701 for reporting (#1776)
  • Terminal WebSocket Bridge Lifecycle: Hardened the terminal WebSocket bridge to properly clean up on disconnect and avoid stale connections. (#1777)
  • False Positive Zombie Detector Kills: Eliminated false positive kills by the zombie detector that could terminate healthy running DAGs. (#1773)
  • DAG Params Treated as Literal Values: DAG parameters are now treated as literal values without expansion, preventing unintended variable substitution. (#1767)
  • AI Installer and Explicit Skills Dirs: Hardened the AI installer and added support for explicitly configured skill directories. (#1771)
  • YAML Spec Workspace Tag at Enqueue: The workspace tag is now correctly saved in the YAML spec when enqueuing from the cockpit page. (#1758)
  • onAbort Label in Lifecycle Hooks UI: The lifecycle hooks panel now correctly displays the onAbort label instead of a missing label. (#1760) - Thanks to @SergioChan for the fix. Reported by @jeremydelattre59 (#1476)
  • JQ Step Raw Output for Large Numbers: Fixed raw output mode for the jq step type to correctly handle large numbers without scientific notation. (#1754) - Thanks to @tushar5526 for the fix. Reported by @insanity54 (#1648)
  • Step Name Limit Relaxed to 255 Characters: The step name character limit has been increased from 40 to 255 characters. (#1753) - Thanks to @SergioChan for the fix. Reported by @jonathonc (#1189)
  • Docker Build Version: Removed git hash suffix from embedded version string in Docker builds.

Changed

  • Rename Abort Handler to onAbort: The abort handler contract has been renamed from onAbort handler to use the onAbort label consistently across the codebase. (#1764)

Performance

  • Queue Startup Lookup: Reduced queue startup lookup churn to lower memory usage and improve scheduler startup time. (#1769) - Thanks to @helmut72 for reporting (#546)

Helm Chart

  • Publish official Helm chart repository.
  • Align shared storage paths in Kubernetes. (#1766)
  • Normalize Helm release metadata.
  • Handle repeat chart release attempts.
  • Rename Helm release tags.

Contributors

Thanks to our contributors for this release:

Contribution Contributor
HashiCorp Vault integration PR (#1757) @dohq
onAbort label fix PR (#1760) @SergioChan
Step name limit relaxed to 255 characters PR (#1753) @SergioChan
JQ step raw output fix for large numbers PR (#1754) @tushar5526
Handler on abort display issue report (#1476) @jeremydelattre59
JQ large number formatting issue report (#1648) @insanity54
Step name character limit issue report (#1189) @jonathonc
Container env variable resolution issue report (#1776) @Popo8701
Scheduler memory growth issue report (#546) @helmut72

New Contributors

Full Changelog: v2.2.4...v2.3.0

Don't miss a new dagu release

NewReleases is sending notifications on new releases.