What kestra-io/kestra shipped
Written by FoxPlug from the repository's own releases; not affiliated with Kestra. Paste your own repository in the box below and FoxPlug writes the same weekly update for your product. This page is an automatic summary of the releases, pull requests and commits in github.com/kestra-io/kestra; Kestra did not write it and does not use or endorse FoxPlug. Every line links to the change it describes.
Get a weekly update like this for your product, free
Week of November 2, 2026
What shipped
- WorkerSelector tags now accept Pebble expressions so flows can route tasks dynamically. Pull request #22308
- The execution artifacts viewer adds an iteration selector when a task has multiple task runs. Pull request #21931
- The cURL command in the Replay window now targets the replay endpoint instead of starting a new execution. Pull request #22320
- The execution follow stream reconnects with a bounded retry instead of stopping on the first error. Pull request #22358
- Scheduler fixes backfill pending date on trigger re-enable and negative evaluation loop duration. Pull request #22270
- ScheduleOnDates runs each date once when the date has milliseconds. Pull request #22273
- Export as CSV on the Flows page works again by calling the CSV endpoint. Pull request #21616
- A Maven plugin download that stops sending bytes for 2 minutes now fails instead of blocking. Pull request #22309
- Selecting text in the flow editor no longer opens the suggest widget, so Ctrl+/ works after a selection. Pull request #22311
Why it matters
This week brings fixes across the scheduler, worker routing, executions and the plugin screen, plus more unit test coverage for UI components. Users get more reliable trigger handling, working CSV export, and editors that behave better after selecting text.
Changelog entry
- Accept Pebble expressions in workerSelector tags. Pull request #22308
- Choose which loop iteration an artifact shows. Pull request #21931
- Point the replay cURL command at the replay endpoint. Pull request #22320
- Reconnect the execution follow stream with a bounded retry. Pull request #22358
- Backfill pending date on trigger re-enable and fix negative evaluation loop duration. Pull request #22270
- Run each ScheduleOnDates date once when it has milliseconds. Pull request #22273
- Export flows as CSV from the CSV endpoint. Pull request #21616
- Fail a Maven plugin download that stops sending bytes for 2 minutes. Pull request #22309
- Stop selecting text from opening the editor suggest widget. Pull request #22311
- Apply Kestra code themes across the app and docs. Pull request #22305
- Add KsChangeReview to lay out a change to review. Pull request #22223
This week: workerSelector tags take Pebble expressions, artifacts viewer adds an iteration selector, scheduler fixes for backfill and ScheduleOnDates, working CSV export on the Flows page, and a reconnect retry for the execution follow stream.
This week in Kestra: workerSelector tags now accept Pebble expressions so flows can route tasks dynamically, and the execution artifacts viewer adds an iteration selector for tasks with multiple task runs. On the scheduler side, backfill no longer skips its pending date when a trigger is disabled and re-enabled, and ScheduleOnDates runs each date once when it has milliseconds. Flows can be exported as CSV again from the Flows page, the replay cURL command now targets the replay endpoint, and the execution follow stream reconnects with a bounded retry. The plugin screen got an update, and more UI components gained unit tests.
Week of October 26, 2026
What shipped
- The Executions page gains a timeline view that places runs in time so overlapping runs and start of failures can be read directly. Pull request #19334
- An average execution duration SLA is added, letting a flow define an AVG_DURATION condition that starts failing executions once it kicks in. Pull request #21833
- The Gantt run panel is added and Loop iterations now expand in the tree with task names and bars instead of anonymous attempt rows. Pull request #21564
- Flow checks are evaluated again on restart and replay, so an execution stopped by a failing check cannot be restarted with the inputs that failed it. Pull request #21998
- A draft flow whose source was not edited since its last save can now be published; the Publish button no longer does nothing. Pull request #22085
- A plugin type that does not match the expected plugin kind is now rejected, so a task runner can no longer be saved as a task. Pull request #21973
- YAML schema warnings computed in the flow editor are now shown in the editor toolbar, not only on hover over the squiggle. Pull request #20547
- Executions get a 30-day default window and an interval chip that cannot be removed, backported to the 2.1 release branch. Pull request #21984
- The Executions and Next Executions tables of the default dashboards are now sorted, with Executions ordered by start date descending. Pull request #22051
- A required string property declared by a plugin could not be saved because an unrendered value was reported as null; this is fixed. Pull request #19752
Why it matters
This week brings a longer view of execution history through the timeline, Gantt and Loop iteration changes, and it tightens correctness around flow checks, plugin kinds and draft publishing. It also fixes several places where saving or publishing a flow failed silently, which users will notice directly.
Changelog entry
- Add a timeline view to the Executions page. Pull request #19334
- Add an average execution duration SLA. Pull request #21833
- Add a Gantt run panel and show Loop iterations with task names in the tree. Pull request #21564
- Evaluate flow checks again on restart and replay. Pull request #21998
- Allow publishing a draft flow whose source is unchanged. Pull request #22085
- Reject a plugin type that does not match the expected plugin kind. Pull request #21973
- Show Monaco YAML schema warnings in the flow editor toolbar. Pull request #20547
- Use a 30-day default window and a fixed interval chip on executions. Pull request #21984
- Sort the Executions and Next Executions tables of the default dashboards. Pull request #22051
- Filter companion metadata files in deleteByPrefix and clean up single files. Pull request #21829
- Declare kv ttl and description headers on setKeyValue so SDKs can set a TTL. Pull request #22047
- Take the Split part extension from the file name. Pull request #21925
This week: a timeline view for the Executions page, an average execution duration SLA, Loop iterations readable in the Gantt tree, flow checks re-evaluated on restart and replay, and publishing an unchanged draft flow now works.
This week in Kestra: the Executions page gains a timeline view that shows runs in time, including overlaps and when failures started. An average execution duration SLA lets a flow act once its average run time crosses a threshold. The Gantt run panel arrives and Loop iterations expand in the tree with real task names and bars. Flow checks are now evaluated again on restart and replay, a plugin type that does not match the expected kind is rejected, and an unchanged draft flow can be published. Executions also get a 30-day default window with a fixed interval chip, YAML schema warnings appear in the editor toolbar, the default dashboard tables are sorted, and required string properties no longer fail validation when unrendered.
Week of October 19, 2026
What shipped
- Dashboard chart sections can now take their rows from a host instead of always calling the dashboard API. Pull request #21338
- Added an Artifacts tab that hosts plugin UI artifacts, such as model graphs and compiled SQL. Pull request #21611
- Plugin UI slots gained a fetchEndpoint prop that calls the plugin's own endpoint for the task's current run. Pull request #21653
- Kv.Put now renders its value once, so a value producing a Pebble expression is no longer evaluated twice. Pull request #21698
- The Webhook trigger now supports configurable rendered response headers, response body and response code. Pull request #20994
- Flow trigger waitForAllRetries now computes whether retries remain correctly when every retry fails without a new execution. Pull request #21697
- Executions that fail in the executor now release their concurrency slot, so the counter no longer stays above the running executions. Pull request #21761
- Replaying an execution now drops stale handler task runs, so finished
on_error, finally and afterExecution handlers run again. Pull request #20505 - Removed the class-based type annotation from the rule plugin interface, so policy rules no longer resolve their type by raw class name and plugin deserializers are respected. Pull request #21676
- Each dashboard now keeps its own saved filters instead of sharing them with other dashboards. Pull request #21756
Why it matters
This week closes several correctness bugs that affect running flows: replay reused finished handler task runs, concurrency slots could leak on executor failures, and kv.Put evaluated its value twice. It also extends what dashboards and plugin UIs can do, with host-provided chart rows, an Artifacts tab, and an endpoint fetcher for plugin slots. The Webhook trigger gets configurable responses, and the release branches received backports of the storage path check and the plugin interface fix.
Changelog entry
- Feat(dashboards): let a host provide the rows of a dashboard chart Pull request #21338
- Feat(executions): add Artifacts tab hosting plugin UI artifacts Pull request #21611
- Feat(plugins): fetchEndpoint prop for plugin UI slots Pull request #21653
- Feat(webhook): support custom responses Pull request #20994
- Fix(core): render the kv.Put value only once Pull request #21698
- Fix(executions): Flow trigger waitForAllRetries Pull request #21697
- Fix(executions): release the concurrency slot of an execution failed by the executor Pull request #21761
- Fix(executions): drop stale handler task runs on replay Pull request #20505
- Fix(dashboards): keep each dashboard's saved filters to itself Pull request #21756
- Fix(dashboards): show readable ISO week labels on weekly execution charts Pull request #21758
- Fix(plugins): remove @JsonTypeInfo from RulePluginInterface Pull request #21676
- Fix(core): log the class of an exception cause that has no message Pull request #21658
This week: replay drops stale handler task runs, failed executions release their concurrency slot, kv.Put renders once, dashboards can take chart rows from a host, a new Artifacts tab, Webhook custom responses, and fetchEndpoint for plugin UI slots.
This week's changes to the project: replaying an execution now drops finished handler task runs so on_error, finally and afterExecution run again; executions failed by the executor release their concurrency slot; kv.Put renders its value only once; flow trigger waitForAllRetries counts remaining retries correctly. Dashboards gained host-provided chart rows and per-dashboard saved filters, an Artifacts tab hosts plugin UI artifacts, and plugin UI slots can call the plugin's own endpoint through fetchEndpoint. The Webhook trigger now supports configurable response headers, body and code. Release branches received backports of the storage path check and the plugin interface fix.
Week of October 12, 2026
What shipped
- Added a TABLE input type with per-cell errors so structured rows can be captured in execute forms. Pull request #20388
- Externalized the queue inside a plugin, with the factory created from the plugin and individual queues created in the KestraBeanFactory. Pull request #18937
- Applied the safe regex check to input validators and dashboard filters, so patterns like (a+)+$ are rejected on save instead of burning the regex timeout at execution creation. Pull request #20610
- The topology now shows LoopUntil as a loop by drawing a directed return path from its end marker to its start marker. Pull request #20768
- The executor now cancels running parallel children when a sibling task fails instead of copying the parent's terminal state onto them. Pull request #19114
- Docker-backed script tasks now check OOMKilled after container termination and report confirmed out-of-memory failures with actionable diagnostics. Pull request #20732
- The getting-started Compose files now wait for a healthy Postgres before starting Kestra, avoiding a first-boot race that could leave Kestra exited. Pull request #19379
- Loop performance improved: value deduplication was stopped, values are no longer read twice in resolveValues, and URI value files stop being parsed once the requested values are read. Pull request #20953
- TaskDict now flushes its debounced update on unmount, so closing or switching the task panel no longer drops the pending value. Pull request #20967
- The LogsKPI and MetricsKPI docs now show KPI charts in their examples instead of TimeSeries and Table charts. Pull request #20966
Why it matters
This week touches several areas people hit in daily use: input validation now rejects unsafe regex patterns before they reach execution creation, Docker script tasks report confirmed out-of-memory failures clearly, and Loop got three separate performance improvements. The editor and topology also gained fixes, including LoopUntil rendering as a loop and restored suggestions in the task source tab.
Changelog entry
- Add a TABLE input type with per-cell errors Pull request #20388
- Externalize the queue inside a plugin Pull request #18937
- Apply the safe regex check to input validators and dashboard filters Pull request #20610
- Show LoopUntil return path in the topology Pull request #20768
- Cancel running parallel children when a sibling fails Pull request #19114
- Report confirmed Docker OOM failures with actionable diagnostics Pull request #20732
- Wait for healthy Postgres before starting Kestra in Compose Pull request #19379
- Speed up Loop by dropping value deduplication and double reads Pull request #20953
- Flush TaskDict debounced update on unmount Pull request #20967
- Resolve subflow child execution ids in the logs tab Pull request #20730
- Show empty-string variable values in the outputs UI Pull request #20044
- Keep falsy scalar leaves in the execution overview Cascader Pull request #20777
This week: a TABLE input type with per-cell errors, the queue externalized into a plugin, a safe regex check on input validators and dashboard filters, LoopUntil shown as a loop in the topology, and Docker OOM diagnostics.
This week's changes to Kestra include a new TABLE input type with per-cell errors, and the queue externalized inside a plugin. Input validators and dashboard filters now go through the safe regex check, so unsafe patterns are rejected on save rather than burning the regex timeout at execution creation. Docker-backed script tasks now report confirmed OOM failures with actionable diagnostics. Loop got three performance improvements, the executor now cancels running parallel children when a sibling fails, and the topology draws LoopUntil as a loop. The getting-started Compose files now wait for a healthy Postgres before starting Kestra.
Week of October 5, 2026
What shipped
- Flow concurrency with behavior QUEUE now accepts a queueSize setting that caps how many executions may wait, cancelling further executions instead of queueing them. Pull request #17046
- Flow triggers can now wait for all retries, disabled by default, so a trigger fires only after an upstream execution exhausts its retries. Pull request #20461
- The date and dateAdd filters now keep a value's own timezone instead of formatting every value in the server's default zone. Pull request #20512
- A label named just system no longer passes the guards that refuse system labels on flows, triggers, backfills, SLAs, tasks and the executions API. Pull request #20314
- The flow watcher now loads dot-named files like myapp.service-health.yml without requiring a tenant prefix. Pull request #20360
- Retrying a subflow execution no longer notifies the parent execution. Pull request #20516
- An unknown onChildFailure value now resolves to UNKNOWN and fails instead of silently resolving to CONTINUE. Pull request #20458
- Killing a terminated execution with nothing left to kill now returns 409 instead of 200. Pull request #20541
- Leaving an execution page now closes its live stream and timers, the flow editor no longer adds a new resize observer per orientation change, and replays no longer wait forever. Pull request #20509
- The flow Concurrency tab is hidden on the Kafka backend, where concurrency limits cannot be read. Pull request #20622
Why it matters
This week brought several behaviour fixes people hit in daily use: queue sizes for queued concurrency, triggers that can wait for all retries, timezone-correct date filters, and stricter handling of system labels and unknown onChildFailure values. It also fixed quieter problems, like subflow retries notifying parents, stuck SSE streams, and files with dots in their names not loading. On the UI side, the variable explorer now renders expression-valued variables and the execution topology duration bar renders again.
Changelog entry
- Flow concurrency with behavior QUEUE accepts queueSize, cancelling executions when the queue is full. Pull request #17046
- Flow triggers can wait for all retries, disabled by default, firing only after an upstream execution exhausts its retries. Pull request #20461
- Date and dateAdd filters keep the value's own timezone instead of using the server default zone. Pull request #20512
- A label named just system is now rejected by the system-label guards on flows, triggers, backfills, SLAs, tasks and the executions API. Pull request #20314
- Flow watcher loads dot-named files such as myapp.service-health.yml without a tenant prefix. Pull request #20360
- Retrying a subflow execution no longer notifies the parent execution. Pull request #20516
- Unknown onChildFailure values resolve to UNKNOWN and fail instead of continuing. Pull request #20458
- Killing a fully terminated execution returns 409 as force-run and restart already do. Pull request #20541
- Flow Concurrency tab is hidden on the Kafka backend. Pull request #20622
- Execution page streams and timers are closed on unmount, and the flow editor no longer adds a resize observer per orientation change. Pull request #20509
- Variable Explorer renders expression-valued variables when selected. Pull request #20365
- Execution topology nodes render the segmented duration bar again. Pull request #20393
Queued concurrency can now cap its queue with queueSize, flow triggers can wait for all retries, date filters keep their timezone, and 409 comes back when there is nothing left to kill. Also: dot-named flow files load, and subflow retries no longer ping the parent.
This week's changes touch things you notice in daily use. Flow concurrency with behavior QUEUE now takes a queueSize cap, so once the queue is full further executions are cancelled rather than queued. Flow triggers can wait for all retries, off by default, so they fire only when an upstream execution has exhausted them. The date and dateAdd filters now keep a value's own timezone instead of formatting everything in the server's zone. A label named just system no longer slips past the guards that refuse system labels. The flow watcher loads dot-named files without a tenant prefix. Killing a terminated execution with nothing left to kill returns 409. Retried subflow executions no longer notify the parent, and unknown onChildFailure values fail instead of continuing. In the UI, expression-val
Week of September 28, 2026
What shipped
- Worker job buffer size is now configurable via kestra.worker.job-buffer-size, allowing control over how many fetched jobs wait locally before new workers start picking them up. Pull request #20074
- Replay from a task run to a different revision now validates that input, variable, and task definitions have not changed in breaking ways, with a new endpoint to check if replay is allowed. Pull request #20016
- Deleting a trigger from the Triggers page is now refused when the flow YAML still declares it, preventing the flow from becoming unscheduled. Pull request #19019
- Executions suspended at a breakpoint can now be killed; their task runs are moved back to CREATED so the concurrency slot releases properly. Pull request #20132
- Task-scoped log copying and downloads now return only logs for that task, not the entire execution. Pull request #20053
- Dashboard charts now mount as they scroll into view, cap concurrent requests, and recycle offscreen canvases to improve performance. Pull request #20155
- Kestra storage URIs were reverted from kestra://namespace/... back to kestra:///namespace/... to fix a backend parsing issue. Pull request #20271
- Execution restart is now deprecated from changing revisions; use replay instead, and restarts now keep outputs of reused task runs. Pull request #20104
- CLI server standalone now loads --flow-path flows after plugin initialization, fixing failures with flows using external plugin task types. Pull request #19778
- The flow create page now accepts blueprintSourceYaml alone without requiring a blueprintId. Pull request #20129
Why it matters
This week adds safety around execution control flow (trigger deletion prevention, breakpoint kills, revision validation) and improves system scalability and performance. Storage URI handling was corrected and UI responsiveness improved for large dashboards.
Changelog entry
- Feat(worker): configurable fetched job buffer size via kestra.worker.job-buffer-size Pull request #20074
- Feat(execution): validate replay from taskRun to different revision, prevent invalid transitions Pull request #20016
- Fix(triggers): prevent deletion when flow YAML still declares the trigger Pull request #19019
- Fix(executions): allow killing executions suspended at breakpoints Pull request #20132
- Fix(executions): task-scoped log copying and downloads now return task logs only Pull request #20053
- Fix(dashboards): lazy-mount charts, cap concurrent requests, recycle offscreen canvases Pull request #20155
- Fix(storage): revert kestra storage URIs to kestra:///namespace/... format Pull request #20271
- Fix(executions): deprecate restarting execution against another revision in favor of replay Pull request #20104
- Fix(cli): load --flow-path flows after plugin initialization Pull request #19778
- Feat(flows): allow create page with blueprintSourceYaml without blueprintId Pull request #20129
- Fix(flows): validate bulk flow updates and identify flows by namespace and id Pull request #20096
- Chore: remove pinact, vulnerabilities-check, and dependency-submission workflows Pull request #20286
Worker buffer sizing, replay validation, trigger deletion safety, breakpoint kill support, task-scoped logs, and dashboard performance improvements shipped this week.
Kestra shipped improvements across execution control, scalability, and performance this week. Workers now have configurable job buffer sizes for better autoscaling, replay operations validate definition changes, deleting triggers is prevented when flows still declare them, and breakpoint-suspended executions can be killed properly. Task-scoped log operations work correctly, and dashboard charts load and render more efficiently.
Week of September 21, 2026
What shipped
- Each trigger now links to the executions it created, letting you view execution history from the Triggers tab. Pull request #19816
- No-code authoring in the topology view now supports inserting, editing, and undoing tasks directly in the flow diagram. Pull request #19342
- Workers can now reach the KV store through the controller with configurable access instead of using only internal storage. Pull request #19812
- Task logs viewer now has a fullscreen button to open logs in a modal, removing the 300px height constraint. Pull request #18062
- Fixed worker job replay for ended task runs and orphaned worker job leases. Pull request #19733
- Killing an execution waiting for a task retry now properly ends the retry instead of leaving it in KILLING state. Pull request #19683
- KPI validation now correctly rejects LABELS filters that do not define a label key. Pull request #19629
- Schedule triggers with impossible cron expressions like 0 0 30 2 * are now disabled at save time. Pull request #19627
- Expression chips in the Inputs panel now insert at the text cursor instead of always copying to clipboard. Pull request #19767
- The secret() function now accepts an errorOnMissing parameter to optionally return null instead of throwing. Pull request #18021
Why it matters
This week brings improvements to flow authoring with no-code topology editing and better trigger visibility into their executions. Several reliability fixes address worker job handling, task retry states, and KV store access patterns. UI refinements and type safety improvements continue across the codebase.
Changelog entry
- Triggers tab now includes links to view executions created by that trigger Pull request #19816
- No-code authoring in topology view with insert, edit, and undo for tasks Pull request #19342
- Workers can access KV store through controller with configurable access Pull request #19812
- Fullscreen button added to task logs viewer Pull request #18062
- Fixed task run replay for ended executions and orphaned worker job leases Pull request #19733
- Kill on retrying task runs now completes properly instead of remaining in KILLING state Pull request #19683
- KPI validation now rejects LABELS filters without a label key Pull request #19629
- Schedule triggers with impossible cron expressions are now disabled at save time Pull request #19627
- Expression chips in Inputs panel now insert at cursor instead of copying to clipboard Pull request #19767
- Secret() function now supports errorOnMissing parameter Pull request #18021
Kestra shipped no-code authoring in the topology view, trigger-to-execution links, and fullscreen task logs this week. Workers now access KV stores through the controller, and execution retry states are more reliable.
This week's Kestra release brings meaningful improvements to flow development and reliability. The topology view now supports no-code task insertion and editing directly in the diagram. Triggers now link to their executions for easier debugging. Task logs got a fullscreen viewer, and workers can access KV stores through the controller. We also fixed several reliability issues around execution retries and improved type safety across the UI.
Week of September 14, 2026
What shipped
- Worker controller gRPC surface now supports chunked streaming. Pull request #19573
- Polling trigger evaluations now emit results at timeout instead of blocking on the same thread. Pull request #19537
- Plugin catalog load failures no longer cache for an hour; retries now happen on each request. Pull request #19061
- Task action menu in topology view now includes an Iterations action to view loop sub-executions. Pull request #19503
- Dashboard duration filters now accept ISO-8601 durations like PT1S in addition to seconds. Pull request #18843
- Moving a namespace folder into its own descendants no longer corrupts the source tree. Pull request #19017
- UnsetVariables no longer throws null pointer exceptions when unsetting nested keys with missing parents. Pull request #19480
- Secure cookie attribute now respects TLS-terminating reverse proxies instead of relying on request.isSecure(). Pull request #19546
- Task property autocomplete in flows now correctly excludes flow inputs and triggers from scoping. Pull request #19215
- Flow editor now accepts expressions and free-form types in output assets declarations. Pull request #19310
Why it matters
This week brought improvements to worker streaming, trigger evaluation threading, plugin catalog reliability, and namespace file operations. Several fixes prevent data corruption and null pointer exceptions in common workflows. Translation tooling infrastructure was added to keep UI messages consistent across development branches.
Changelog entry
- Feat(worker): chunked streaming on the worker controller grpc surface Pull request #19573
- Fix(dashboards): duration filters take an ISO-8601 duration or a number of seconds Pull request #18843
- Fix(worker): emit the trigger result at the timeout instead of waiting for the evaluation Pull request #19537
- Feat(topology): loop iterations in task action menu Pull request #19503
- Fix(system): make the Secure cookie attribute proxy-aware Pull request #19546
- Fix(namespaces): prevent folder moves into descendants Pull request #19017
- Fix(core): retry plugin catalog load instead of caching a failure for 1h Pull request #19061
- Fix(core): prevent NPE in UnsetVariables when a nested key's parent is missing Pull request #19480
- Fix(flows): exclude flow inputs and triggers from task-property autocomplete scoping Pull request #19215
- Fix(assets): accept expressions and free-form types on output assets in the flow editor Pull request #19310
Kestra shipped chunked streaming on worker controllers, fixed plugin catalog caching failures, prevented namespace folder corruption, and added loop iteration actions to the topology view.
This week Kestra improved worker gRPC streaming, fixed plugin catalog load failures that persisted for an hour, resolved namespace folder move corruption, and enhanced the topology view with loop iteration actions. Several reliability fixes address null pointer exceptions and cookie handling behind reverse proxies, while the flow editor now correctly handles expressions in asset declarations.