github dagucloud/dagu v2.25.1

4 hours ago

Highlights

Web UI redesigned

This release ships a redesigned web UI. A big thank you to @SCcagg5, who designed and built the great web UI in this release. It changes how Dagu feels to use every day.

Business calendars

Schedules can follow business calendars (#3435). Calendars have an API (#3449), a page to browse and edit them (#3451) and Git sync (#3470), and each DAG previews its next runs (#3431).

Agent steps

  • Managed OpenCode v2.1.4 (#3367), with OpenCode v2 errors classified and snapshots kept (#3466).
  • Harness providers are suggested in the YAML and visual editors (#3473).
  • OpenRouter requests follow provider order (#3420), and failures returned with a 200 status are retried (#3426).

Operations

  • Server secrets can be read from files: password_file, secret_file, token_file (#3214).
  • Nix support (#3284), and symlinked DAG files reload when their targets change (#3460).
  • defaults.max_concurrent for fan-out steps (#3482).
  • Distributed runs: a dispatch no worker claimed is kept, and the exit code of a remote child is reported (#3461).
  • Less idle polling and fewer disk reads behind live updates (#3457), and scheduler state is saved once per burst of events (#3450).
  • AI apps can connect under remote access when its enabled (#3481).

Contributors

Thanks as well to everyone who contributed code, reports and reviews to this release:

Contribution Contributor
Add local registry support for DAG tools (#3268) @100apps
Correct an unusable model answer once in computer and xlsx steps (#3341), Move the correction messages into agentstep.AppendCorrection (#3421) @AniketR10
Move the model answer correction loop into agentstep (#3377) @AniketR10 (report)
fix(browser): tell unlabeled table inputs apart by column header (#3480) @RyoKusnadi
config: read server secrets from *_file keys (#3214), specs: Add spec 083 and the samples store (#3381), ir: Add run state fields for ephemeral runs and reused outputs (#3382), runtime: Bound continuous steps and carry outputs of selected steps (#3383), api: Add step samples, events, availability and selected-step runs (#3384), test(ui): add YAML fixtures for the document model tests (#3385), ui(lib): add shared UI kit, status helpers and right-panel shell (#3386), ui(canvas): add canvas engine core, toolbars and editor helpers (#3387), ui(i18n): add workspace message catalogs, first batch (#3388), ui(canvas): add canvas Flow view, step run panel and workflow panel (#3389), ui(editor): add YAML document model, canvas model and run source logic (#3390), ui(editor): Add edit session, YAML format and quick fixes, run actions, tab strip (#3391), ui(editor): Add canvas graph model, Add step panel, issues popover, run bar (#3392), ui(canvas): Add layered layout, dependency edges, status styles, reference picker (#3393), ui(canvas): Add export, flow builder, upstream data panel, output capture (#3394), ui(canvas): Add node cards, launchers, inspector sections, client issues (#3395), ui(editor): Add visual editor, step inspector and YAML file panel (#3396), ui(lists): Open runs on the workflow page; add tab and schedule helpers (#3397), ui(workspace): Add workspace URL state, legacy redirects and run list links (#3398), ui(workspace): Add workspace data layer, run facts and Workflow panel (#3399), ui(workspace): Add run start controls, visible runs and reuse source (#3400), ui(workspace): Add data provider, bar identity, continuous panel and step list (#3401), ui(logs): Add run actions cluster, cached logs and log popout page (#3402), ui(workspace): Add Activity dock, step run view and workflow page (#3403), test(workspace): Add integration tests for the workspace shell and step view (#3404), ui(pages): Retire classic run pages and open runs on the workflow page (#3405), test(editor): Add integration tests for the editor, inspector and run overlay (#3406), test(ui): Add repository-wide guard tests and ESLint boundary rules (#3407), e2e: Add workspace helpers and fixtures, update existing specs (#3408), e2e: Add workspace specs, part 1 of 2 (#3409), e2e: Add workspace specs, part 2 of 2 (#3410), examples: Add the workspace demo workflows (#3411) @SCcagg5
feat: read server secrets from files (password_file, secret_file, token_file) (#3207) @SCcagg5 (report)
Nix support (#3284) @dagomez137
build(deps): bump github.com/go-chi/chi/v5 from 5.3.2 to 5.4.0 in the go-security group across 1 directory (#3322), build(deps): bump the go-patch group with 10 updates (#3471), build(deps): bump the actions-patch group with 2 updates (#3472) @dependabot
Distributed: run dispatched to a just-stopped worker is never re-dispatched (stays queued); dag.run child lost when all matching workers busy (#3033) @gek1980 (report)
feat(harness): support managed OpenCode v2.1.4 (#3367) @philo-x
bug: System Status -> Workers shows only 2 labels +x if 3 or labels specified although enough space to display all (#3375), bug: Queued DAG definition cannot be built (#3379) @pommetjehorlepiep (report)
fix(harness): classify OpenCode v2 errors and retain snapshots (#3466) @tbrandenburg
bug: OpenCode v2 misclassifies 404 errors and drops snapshot files (#3467) @tbrandenburg (report)
fix(dags): sort the DAG list by status and last run on the server (#3119) @theluckystrike
feat: support defaults.parallel.max_concurrent (#3441) @vk-marcel (report)
scheduler: symlinked DAG files (nix home-manager) don't reload when the symlink target is re-pointed — stale schedule fingerprint persists until restart (#3308) @xbpk3t (report)

Full Changelog: v2.24.0...v2.25.1

Don't miss a new dagu release

NewReleases is sending notifications on new releases.