github kestra-io/kestra v0.24.0

latest releases: v0.24.4, v0.23.14, v0.22.27...
one month ago

Changelog

📢 Breaking Changes

security

global

🚀 Features


api

cicd

cli

  • d9bdcc5 added skip-deprecated flag in plugindoc command

cluster

  • c4e7625 persist maintenance mode in the database

core

dashboards

devtools

execution

  • f97ad45 "Debug Expression" for Trigger Variables (#10242), closes #10242
  • fa2bf8f allow to wait for execution completion into a Webhook, closes #10147
  • 98d1ab5 add execution ID to the latest execution

executions

  • f7c5fd3 use the uploaded file name for inputs of type FILE
  • 8319ad7 work on the ui for execution dependencies
  • 66889a3 execution dependencies
  • fc0b52d add execution outputs inside the expression context
  • 05cb79f provide a task run caching mechanism
  • efdc29f add preview for local files and namespace fles, closes #9740
  • e2571ba Allow unqueuing to states other than RUNNING #5939 (#8381), closes #5939 #8381
  • 05b50c2 allow suspending an execution at a breakpoint
  • c8aa678 allow using local host files in tasks

filters

  • 2a24e29 prevent saving a search with duplicated label, closes #9026

flows

gemini

  • ff66471 add the plugin to .plugins

kv

logs

  • 752a927 allow LogShipper to filters on flowId and executionId
  • eb22d3f allow purging log by execution ID

namespaces

pebble

plugin

plugins

scripts

  • a1e5344 enable script/cli plugins to override final task state

sifflet

system

  • 809c0a2 improve performance of computeSchedulable
  • 4996ccd add a between-items timeout on all our SSE connections
  • b97f93f use available processor count number of executor threads
  • 47b10b4 repoll immediatly when a poll returns resutls in the queue
  • 31d372d make Property a string in openapi spec generation
  • c047e37 store version in the settings
  • 075cc07 don't deepClone maps inside MapUtils.merge
  • 69bf11c add server_type as global metrics tags

tenant

tenants

  • 94dc1ce provide an endpoint that list all tenants dependencies

tests

  • 302ec94 testsuite run persistence
  • 770438e use Flow YAML autocompletion
  • f57ab7a impl disabling testcase
  • b6475d8 allow disabling a TestSuite preventing it to run
  • afd4b81 add execution url in test result

triggers

  • 0c90d6d add failOnTriggerError to create a failed execution on trigger error, closes #7856
  • c4082db avoid clearing selection when refreshing in triggers list

ui

global

  • 83f9253 Trigger Initialization Method Performance Optimization
  • 19df58c hide community button on EE edition (#10251), closes #10251
  • 12c8db4 action to check if tag is latest in github release
  • 02430a0 introduce ui changes for keeping filename on file input
  • de8c3fd trigger EE CI when OSS develop branch succeed
  • d299ff7 feat(): add Kestra plugin in the list

📘 Subtasks

build

  • f9b1040 try to remove the noise for code coverage

core

dashboards

deps

executions

flows

logs

namespaces

plugins

system

  • 4dc1e52 avoid calling allTaskWithChild when computing plugin defaults
  • 51f8315 avoid calling TaskRun.toStringState() when not needed
  • 5aa1b20 call the close runnable later
  • d7c5480 relax again some test on AbstractSettingRepositoryTest
  • 5e97e25 relax AbstractSettingRepositoryTest assertion
  • 7b44569 remove dedicated JdbcServiceLivenessManager

test

  • d24f605 Improved TestsUtils and added more tests for coverage in… (#9776), closes #9776

tests

  • fb96fc2 add validation on assertions

version

  • 9859ea5 update to version '0.24.0'
  • 23e35a7 upgrade version to 0.24.0-rc2-SNAPSHOT
  • 281a987 upgrade version to 0.24.0-rc1-SNAPSHOT
  • d16324f update to version 'v0.24.0-rc0-SNAPSHOT'.
  • 9eeffa0 bump ui-libs to version 0.0.222 (#10285), closes #10285

global

🐛 Bug Fixes

ai

api-docs

ci

  • 04ba736 workflow build artifact doesn't need the plugin version
  • fd6a0a6 bad SNAPSHOT repo URL
  • 104c4c9 don't publish docker in build-artifact
  • 21cd212 add missing build artifact job
  • ee8762e correctly pass GH token to release workflow
  • 2109fa8 Avoid retag latest docker image being true by default
  • e015a94 modify job id for end task
  • aab3fd4 put back bump helm chart and remove if condition
  • c06985c modify actions order
  • 28f58e6 remove debug branch for actions checkout step

cli

  • 1501456 tenantService was injected directly, this is not working in cli
  • a900d8f when picoli was throwing InitializationException the java process was not stopped
  • 45291eb #10062 add tenant to load flows properly at the startup (#10290), closes #10062 #10290
  • d698ef5 prevent NPE on commands defaulting to help
  • 6d9ef2b enforce server command validator (#7418), closes #7418

core

  • fix(core): reflect feedback

  • Deduplicated a list inside the Labels task.

  • Worked around label mutation at Worker.

  • Attempted to deduplicate labels within Execution as possible.

  • fix(core): remove irrelevant changes*, closes #10044

dashboard

  • 8a0ecde pageSize & pageNumber is now correctly pass when fetching a chart (#10413), closes #10413

dashboards

docker-compose

  • 8637bb8 add info about password policy to docker compose example
  • df94a24 cut the removed enabled flag

editor

execution

  • 9c702d3 parent flow never ends when subflow fail due to SLA, closes #9618

executions

executor

filters

  • 6d72804 left menu current page disabling was not working, closes #9476

flow

flows

gradle

  • 0a6bfd1 be able to use publishToMavenLocal (#10047), closes #10047

guides

iam

  • 0c9b522 tenant deletion raised error about mandatory tenantID in request context

logs

  • 3660e1a update query filter to show logs ns and flowwise (#10248), closes #10248

namespaces

  • 8173e8d autocomplete in kv & secrets
  • fae0c88 amend problems with namespace secrets and kv pairs (#10543), closes #10543
  • b659747 fixes loading of additional ns (#10518), closes #10518
  • 40b337c make sure the namespace parameter is properly passed when reading a file (#10384), closes #10363 #10384
  • 8cf159b prevent namespace folder highlighting when containing file is selected (#10364), closes #10360 #10364
  • c5b9aa1 properly load flows when changing namespace (#9393), closes #9352 #9393
  • 5e1b059 reload namespace once the id parameter changes (#9372), closes #9372

pebble

  • bc3d534 #8953 add more flexible day number conversion method (#10205), closes #8953 #10205
  • 80d394f fix typo
  • 30c4f11 fix typo

plugin

  • 25adcc4 FileSystems.newFileSystem caused a Path component should be / in plugins tests (#9570), closes #9570
  • 8516557 FileSystems.newFileSystem caused a Path component should be / in plugins tests (#9562), closes #9562

plugin-versioning

  • 76fc55b replace current JAR if more recent (#9629), closes #9629

plugins

  • 1e34707 go to list of plugins from sidebar (#10385), closes #10385
  • 393faed adjust font sizes for collapsible body (#10164), closes #10164
  • 4a8b3d4 plugin search is now searching in all element types (#9899), closes #9899
  • 00b1e32 finish pinia migration of plugins store (#9746), closes #9746
  • c67c712 check whether plugin registry support versioning (#9122), closes #9122

podman

  • a981a30 do not pass the tag directly to pullImageCmd (withTag) (#9607), closes #9607

repositories

  • 251a821 make filter service protected (#10241), closes #10241

runner

  • 25f5ccc support floating-point CPU values in Docker runner (#10366), closes #10366

secrets

  • 3796497 show namespace column (#10222), closes #10222
  • 5b5b616 circle masked input to replace squarefont. (#10088), closes #10088

security

  • 8094756 use the login/pass of basicAuth for all api urls (#10027), closes #10027
  • 9846333 remove the authorization header (#10025), closes #10025
  • d46ebe2 add back www-authenticate header (#10018), closes #10018

system

  • f87f2ed avoid potential NPE in ServiceLivenessManager (#10338), closes #10338
  • 298a6c7 ignore state transition failure for indexer
  • e36925c fix and cleanup StorageInterface (kestra-io/kestra-ee#4488)
  • ec7e65d possible NPE when computing flowable task outputs
  • d10b11e merge flowable outputs when terminated
  • acca4dd EE compilation
  • 6a4397f avoid creating multiple worker job queue
  • 2a53f55 force running after execution tasks even if the execution is killed, closes #9852
  • d22b7e9 fix ExecutionControllerRunnerTest.resumeExecutionPaused()
  • 5493f53 revert Property type changed to string in openapi spec
  • 9813d60 possible NPE on trigger when computing variables
  • ebe1f3f flow graph fail to be created while editting a flow, closes #9551
  • b9f224c SettingRepository test
  • 695f684 support allowFailure and allowWarning for the Pause task, closes #9416
  • 3dbb1d7 allow service to move from CREATED to TERMINATING (#9408), closes #9408
  • 5304630 avoid starting two queues for WorkerJob and WorkerTriggerResult, closes #9007
  • 1ed60ba import flow should set the tenantId

taskrunner

  • 023d005 abstract task runner (#9769), closes #9769

tasks

  • 289a26b sleep example are a full one

test

  • 2c68c70 flaky test JdbcQueueTest.withGroupAndType()
  • 552d55e RestactCaseTest.restartFailedWithFinally() should use executionService.isTerminated()
  • 07fd74b flaky ExecutionControllerRunnerTest.triggerExecutionAndFollowDependencies()

tests

  • 77c4691 rework basic auth service test (#10409), closes #10409
  • 6e0a1c6 increase the sleep inside ExecutionControllerRunnerTest.triggerExecutionAndFollowDependencies()
  • 95d95d3 fix assertions in DateFilterTest.now()
  • 6b8d3d6 flaky test with wire mock not staring fast enough (#10383), closes #10383
  • 60eef29 await for terminated execution instead of sleep in ExecutionControllerRunnerTest.killByIdShouldFailed()
  • 20ca7b6 increase wait time to 10 in LogConsumerTests.logs()
  • 4c79576 improve JdbcQueueTest flaky tests
  • aecd4cc strengthen awaitExecution predicate
  • 3a3dadd timezone issue
  • eb8c5ec move back wiremock port due to hardcoded in application.yml
  • 6e7f3a6 avoid wiremock port collision
  • 39e08ab deleted db serialization was broken in recent commit
  • bfe4d7b TestSuite fields were almost all required in openapi spec
  • 70b9dde testcases were not fully validated
  • 01ccd0d test editor was showing previous shown plugin doc

triggers

  • ea46505 bulk action on triggers did not take into account this is async (#10307), closes #10307
  • c31fae4 ensure clearing the selection. (#10245), closes #10245
  • 1331513 only updates the trigger that matches both flow and trigger Id (#10158), closes #10158
  • 2543ad7 disable backfill execution based on yaml definition (#10026), closes #10026
  • 1d7574b correctly replace the update triggers when disabling
  • 5b5cca3 #4110 NPE when disable trigger with empty body (#9635), closes #4110 #9635

ui

  • ea6d30d load correctly filters + refresh dashboard on filter change (#10504), closes #10504
  • 0c5e190 reorder collapse items and refine connection properties to show only non required in collapsed (#9673), closes #9673
  • f826d9a update label styles for better visual (#10070), closes #10070
  • c468083 properly update theme switching (#10065), closes #10065
  • 1b7034d fixes color for icon and label in light theme (#10032), closes #10032
  • 0f6ae24 fixes basic auth handling (#10010), closes #10010
  • a7307b6 openGroup to directly open the first plugin element (#9964), closes #9964
  • 27d1069 fixes merge snafu and warning lastExecutionByFlowReady (#9962), closes #9962
  • dfc0bcb fix types of axios (#9676), closes #9676
  • 99fca84 adjust logo in collapsed state (#9761), closes #9761
  • aedfbdc remove Close Task button in NoCode editor (#9661), closes #9661
  • 4257168 deletion of namespace files depend on node not data (#9666), closes #9666
  • 651fdc1 default value for expression cannot be null (#9636), closes #9636
  • 105b8ec make file panel appear beside main panel in namespace (#9546), closes #9546
  • 1fa1f0c make array and KV Pairs work in nocode
  • bb746e5 avoid validation API call when Flow editor is empty (#5387) (#9538), closes #5387 #9538
  • 007ace6 nocode API calls on EE needs tenant (#9527), closes #9527
  • f700b8a snafu on duplicate input pair (#9514), closes #9514
  • 576c5cf [nocode] make dag tasks work (#9506), closes #9506
  • 26df3e9 Better duplicate key management in the pair component (#9431), closes #9220 #9431 #9491
  • 079874e resolve filter display inconsistency between dark and light themes (#9487), closes #9398 #9487
  • a5928fd nocode updating inputs from yaml (#9430), closes #9430
  • efed3cb rename namespace field (#9492), closes #9492
  • fab1bb0 prevent cursor change in Editor component when modelValue is updated from outside (#9371), closes #9371
  • aaea1e0 restore add button as a button
  • a09fd76 use type button instead of button
  • a3f0001 base the required prop on the requiredProperties list (#9433), closes #9377 #9433
  • 5b6311a amend visiblity of labels (#9475), closes #9475
  • 5eafa90 make download and preview visible for text ouputs (#8348), closes #8348
  • d31d8db variables should work with duplicated keys (#9425), closes #9425
  • ee3afb5 add datepicker to nocode string field (#9351), closes #9351
  • 1dcccb7 nocode - open onPause in a new tab (#9366), closes #9366
  • d83339d Tabs that are not blueprint should appear only once (#9370), closes #9370
  • 51afdfd clear selection of retry form radio buttons (#9268), closes #9268
  • ad2eb8a allow key of sub-tasks to be other than tasks (#9333), closes #9333

variables

  • 7463be3 put fixtures files with arbitrary key and extract it back as root level "files" variable (#9689), closes #9689

webserver

  • 910bceb server exceptions were not logged when no message
  • 833fa56 fix reason in ErrorController (#9897), closes #9897

global

  • 9c6b926 restore InputForm (#10568), closes #10568
  • 0357321 Updated InputsForm.vue to clear Radio Button Selection (#9654), closes #9654
  • a63cb71 remove debugging value from playground (#10541), closes #10541
  • db5d83d add missing webhook releases secrets for github releases
  • 1068c9f handle empty flows list in lastExecutions correctly (#10493), closes #10493
  • 0d5b593 fix(): fix icons
  • c68c1b1 set postgres and mysql queue offset as a bigint (#10344), closes #10344
  • b1d41f6 handle label filter with and instead or for flow, closes #4390
  • 90eb0ff basePath is now a function
  • 4e1c4b7 curl feature needs baseUrl as a function (#10092), closes #10092
  • 6fb0858 basic auth commented out by default to load setup page first
  • 732f1d9 patch element plus for tabs (#10034), closes #10034
  • 9c6b59c bring back lastexecution endpoint (#9973), closes #9973
  • 094ab82 avoid failure to deserialize json objects that have unknown fields with http client (#9668), closes #9667 #9668
  • 5682d12 correctly use default tenant when synchronizing file with local (#9605), closes #9568 #9605
  • 6953e9f cleanup empty metadata to fix variable creation (#9529), closes #9529
  • f15919b small tweaks on tabs (#9520), closes #9520
  • 92cddfc fix(): display correctly doc/chart preview when editing custom dashboard, closes #9411
  • 91983cb properly detect condition fields (#9353), closes #9353
  • 367f49d initialize array fields without any value (#9367), closes #9367

🏭 Tests

core

  • d08d345 fix falling test on schedule

e2e

  • 710f9a3 include E2E tests in PR CI (#10036), closes #10036

executions

  • 93b9932 improve reliability of the ExecutionControllerRunnerTest

processor

  • 2b33247 add edge-case tests for ServicesFiles utility (#8828), closes #8828

storage

  • 8080bbf unflaky StorageTestSuite.filesByPrefix

🔄️ Changes

ai

  • 2435223 migrate ai store from Vuex to Pinia (#10174), closes #10174

core

  • b720105 migrate misc store module to pinia (#10048), closes #10048
  • 7de415e migrating doc store module to pinia (#9882), closes #9882
  • 157e942 migrate taskrun to Pinia (#9953), closes #9953
  • 3c4c1ed improve translation pull request description (#9938), closes #9938
  • ce1f8a5 remove default reviewers on translation pull requests and add frontend team mention (#9935), closes #9935
  • c4581d1 change default reviewers on translation pull requests to frontend team (#9931), closes #9931
  • 5c9bb7a change default reviewers on translation pull requests (#9929), closes #9929
  • c145a02 open translation pull request on the selected branch instead of develop (#9924), closes #9924
  • 64121eb open translation pull request on the selected branch instead of develop (#9922), closes #9922
  • 250ada9 open translation pull request on the selected branch instead of develop (#9919), closes #9919
  • 82a8a11 simlify code in plugin documentation (#9900), closes #9900
  • f60cc48 migrates trigger module to pinia (#9896), closes #9896
  • c8e61ba migrates core.js to pinia (#9858), closes #9858
  • 574d75c properly import github icon to be used in template section (#9403), closes #9403

dashboards

  • 25592ec minor improvements of dashboard components code (#10085), closes #10085
  • ad87583 strengthen types for dashboard store module (#9917), closes #9917
  • 0e2d537 move the dashboard selector to proper place and clean up the code (#9883), closes #9149 #9872 #9883
  • 4d4f822 improve process of dashboard creation (#9530), closes #9149 #9530
  • e8c6a45 further clean up of the ui code related to dashboards (#9521), closes #9149 #9521
  • 839836a add missing translations related to dashboards (#9519), closes #9519
  • 7456440 clean up ui code related to dashboards (#9421), closes #9149 #9421

layout

  • b2f8c89 migrate layout.js from vuex to Pinia. (#9687), closes #9687

pebble

  • 08b0b68 add more timestamp data time format
  • cfea378 Stronger the uuid function from v4 to v7

service

  • 1014cde migrate service.js to pinia (#9760), closes #9760

stat

  • 8e50da8 migrate stat store from Vuex to Pinia (#9750), closes #9750

store

  • 14e853c remove unused graph store module (#10144), closes #10144
  • 83e1d77 migrate Blueprints to Pinia (#9735), closes #9735

template

  • 1336cca migrate template module to pinia (#10226), closes #10226

ui

  • 3637f4f only load the schemaType once per page (#9619), closes #9619
  • 2b59d9e migrate bookmarks store to pinia (#9685), closes #9685
  • bc8c8d4 load a sample schema while waiting (#9558), closes #9558

global

  • b70faea migrate executions store from vuex to pinia (#10093), closes #10093
  • d9371c1 integrate vuex & axios with pinia (#9626), closes #9626
  • cbd0b8a fix font-size of label (#9634), closes #9634
  • 9c052c0 start replacing vuex with pinia (#8430), closes #8430
  • bd576d6 remove package lock json added by mistake
  • 31e9323 avoid duplicating vite alias
  • 2a808be load nocode root form from server schema (#9327), closes #9327

🛠 Build

ci

  • 679befa allow downloading the exe from the workflow and not the release
  • c39a6a9 fix setversion workflow not making tag push trigger main

core

  • 5dafbee Replaced Microsoft Java with Temurin distribution on dev container

deps

  • c6310f0 bump com.github.ben-manes.caffeine:caffeine
  • 21ba59a bump org.postgresql:postgresql in the gradle group
  • 1925d78 bump axios in /ui in the npm_and_yarn group (#10305), closes #10305
  • ac9f44b bump flyingSaucerVersion from 9.13.0 to 9.13.1
  • c287304 bump com.google.cloud:libraries-bom from 26.63.0 to 26.64.0
  • 298e9f3 bump com.microsoft.playwright:playwright
  • ebd47b3 bump software.amazon.awssdk:bom from 2.32.1 to 2.32.6
  • 48a3a3c bump jacksonVersion from 2.19.1 to 2.19.2
  • fc7b773 bump com.mysql:mysql-connector-j from 8.0.33 to 9.3.0
  • 06ffa66 bump commons-io:commons-io from 2.19.0 to 2.20.0
  • 3d0b2b7 bump the npm_and_yarn group in /ui with 3 updates (#10236), closes #10236
  • f54ed8a bump io.micrometer:micrometer-core from 1.15.1 to 1.15.2
  • 6a796b0 bump com.gorylenko.gradle-git-properties
  • a44b7f7 bump org.opensearch.client:opensearch-java
  • 85b5002 bump org.apache.logging.log4j:log4j-to-slf4j
  • 4fd66d7 bump com.vanniktech.maven.publish from 0.33.0 to 0.34.0
  • 362858e bump org.apache.commons:commons-lang3 from 3.17.0 to 3.18.0
  • 06e4c9f bump software.amazon.awssdk:bom from 2.31.77 to 2.32.1
  • a71e461 bump software.amazon.awssdk.crt:aws-crt
  • cf4f655 bump software.amazon.awssdk:bom from 2.31.75 to 2.31.77
  • aa27241 bump com.github.docker-java:docker-java from 3.5.2 to 3.5.3
  • ef098c2 bump aquasecurity/trivy-action from 0.31.0 to 0.32.0
  • 882ac34 bump software.amazon.awssdk:bom from 2.31.70 to 2.31.75
  • e236909 bump com.azure:azure-sdk-bom from 1.2.35 to 1.2.36
  • 67518bc bump com.gradleup.shadow from 8.3.7 to 8.3.8
  • b1cad2f bump org.testcontainers:testcontainers
  • 0687808 bump com.google.cloud:libraries-bom from 26.62.0 to 26.63.0
  • 90d30bb bump com.github.docker-java:docker-java from 3.5.1 to 3.5.2
  • fcf5215 bump flyingSaucerVersion from 9.12.1 to 9.13.0
  • 856db91 bump com.google.adk:google-adk from 0.1.0 to 0.2.0
  • d4891d1 bump opensearchRestVersion from 3.0.0 to 3.1.0
  • bff6865 bump software.amazon.awssdk:bom from 2.31.65 to 2.31.70
  • ebc8879 bump org.jsoup:jsoup from 1.20.1 to 1.21.1
  • 710d2f6 bump com.gradleup.shadow from 8.3.6 to 8.3.7
  • 48de33d bump org.testcontainers:testcontainers
  • 59b837e bump com.microsoft.playwright:playwright
  • 37bd6e1 bump jacksonVersion from 2.19.0 to 2.19.1
  • a514500 bump org.apache.logging.log4j:log4j-to-slf4j
  • 39d31f4 bump nl.basjes.gitignore:gitignore-reader
  • 35eef54 bump software.amazon.awssdk:bom from 2.31.61 to 2.31.65
  • f8aa9cc bump org.wiremock:wiremock-jetty12 from 3.13.0 to 3.13.1
  • 0218931 bump flyingSaucerVersion from 9.12.0 to 9.12.1
  • 369d4ba bump org.jooq:jooq from 3.20.4 to 3.20.5
  • 0d1f7a4 bump io.micrometer:micrometer-core from 1.15.0 to 1.15.1
  • 7e312b8 bump software.amazon.awssdk.crt:aws-crt
  • 250c219 bump software.amazon.awssdk:bom from 2.31.59 to 2.31.61
  • c1d40e6 bump com.google.cloud:libraries-bom from 26.61.0 to 26.62.0
  • 462550d bump org.owasp.dependencycheck from 12.1.2 to 12.1.3
  • b54705e bump com.github.ben-manes.caffeine:caffeine
  • 43eee22 bump org.owasp.dependencycheck from 12.1.1 to 12.1.2
  • eb1fad4 bump com.azure:azure-sdk-bom from 1.2.34 to 1.2.35
  • d68a7c6 bump kafkaVersion from 3.9.0 to 4.0.0
  • 9f327d2 bump opensearchRestVersion from 2.19.2 to 3.0.0
  • 5a3416d bump org.projectlombok:lombok from 1.18.36 to 1.18.38
  • f7be856 bump software.amazon.awssdk.crt:aws-crt
  • ced3067 bump aquasecurity/trivy-action from 0.30.0 to 0.31.0
  • 32a3d37 bump bouncycastleVersion from 1.80 to 1.81
  • 3b74190 bump org.opensearch.client:opensearch-java
  • e5083e7 bump software.amazon.awssdk:bom from 2.31.50 to 2.31.59

deps-dev

  • 7472023 bump brace-expansion in /ui in the npm_and_yarn group (#9496), closes #9496
  • ef65793 bump @vitest/coverage-v8 from 3.1.4 to 3.2.1 in /ui (#9300), closes #9300
  • 7c44c76 bump typescript-eslint from 8.32.1 to 8.33.1 in /ui (#9309), closes #9309
  • 0052537 bump eslint from 9.27.0 to 9.28.0 in /ui (#9306), closes #9306
  • 617e425 bump @typescript-eslint/parser in /ui (#9301), closes #9301

tests

  • e97f405 replace workspaces with proper storybook config + working aliases

global

  • 6f62988 remove codecov for ui #10038, closes #10038
  • 2cb361a lower codecev default targets to make it more pertinent
  • 3309f69 fix frontend storybook tests (#9484), closes #9484

📝 Documentation

dashboard-data

  • 093ae3a fix indentations for dashboard data plugins (#9918), closes #9918

dashboards

  • a152204 fix example indentations (#9802), closes #9790 #9802

schedule

  • 0c73084 mention Sunday day-of-the-week alias (#9961), closes #9961

tests,flows

  • dcc5c34 set loosely types fields like input and variable as additional properties

  • 33f0b53 fix(flows)*: load flow for execution needs to be stored most of the time (#10566), closes #10566
  • f717bc4 update frontend-tests (#10380), closes #10380
  • 9d82df6 Revert "fix(core): fixes cumbersome operator selection (#10322)" (#10377), closes #10322 #10377
  • f0ab8a3 fix(system)*: don't mix constructor injection with field injection
  • ca96c7b fix(namespaces)*: prevent overwriting namespace file content with undefined string (#10247), closes #10247
  • 6bc1e3e fix(executions)*: restart with finally or afterExecution, closes #10155
  • 581442c feat(security) #10180 open basic auth validation endpoint (#10190), closes #10180 #10190
  • fe48524 fix(security) #10133 add password validation and save error in database for the front to use (#10177), closes #10133 #10177
  • c8d89db fix(security) #10133 server error when no basic auth configuration persisted (#10175), closes #10133 #10175
  • 278dbd8 fix(security) #10133 ignore enable=true flag from basic auth config (#10148), closes #10133 #10148
  • f2fd9f3 fix(security) #10133 basic auth config always takes priority (#10145), closes #10133 #10145
  • 4afa7dc fix(security) #4311 filter only kestra endpoints (#9971), closes #4311 #9971
  • b705459 Merge remote-tracking branch 'origin/develop' into develop
  • ff8c224 fix(security) #4311 add basic auth whitelist for config and add new c… (#9968), closes #4311 #9966 #9968
  • f54c46e Revert "feat(core): introducing OSS authentication user creation and login logout (#9683)", closes #9683
  • 475c8d3 fix(webserver)*: bulk set labels remove existing labels, closes #9764
  • ae44263 run all tests (#9868), closes #9868
  • 05787ef fix(namespaces)*: take pagination into account when browsing namespace flows (#9849), closes #9805 #9849
  • c56f377 fix(system)*: mitigate possible deadlock for execution delay and SLA
  • 09adee6 Update Request.java multiline JSON example
  • c9debbd remove unused constant (#9751), closes #9751
  • 1d9b5d2 Fix(UI) execution charts values (#9669), closes #9669
  • 9fa5f6d feat(executions)*: add tasks to set and unset execution variables, closes #9555
  • a623b4c fix(system)*: runIf inside a WorkingDirectory can crash the Worker, closes #9639
  • 1d66f7e Fix/failing backup unit test (#9642), closes #9642
  • 1139a16 nocode editor (#9624), closes #9624
  • 1e55003 Revert "refactor: start replacing vuex with pinia (#8430)", closes #8430
  • 7fc274f Fix/tutorial flows with migration (#9620), closes #9609 #9620
  • 185fa80 Feat/clean query filters (#9569), closes #4106 #9569
  • f009263 Revert "fix(plugin): FileSystems.newFileSystem caused a Path component should be / in plugins tests (#9562)", closes #9562
  • 4557bc8 flows: add e2e create and execute Flow test
  • aea8d6e fix storybook tests
  • 62fc839 Fix Sidebar Scrollbar and Version Text Wrapping, Minimize Panel Styles (#9528), closes #9528
  • 8678d2d fix(core)*: make sure tour always opens with code & topology tabs visible (#9513), closes #9513
  • 6d0f6c1 Translations from en.json (#9501), closes #9488 #9501
  • cfa5ba5 Feat/rework compatibility layer (#9490), closes #4062 #9490
  • edc32f6 fix(core)*: properly display chart colors for logs (#9429), closes #9429
  • a92aa03 fixed blueprint redirection in namespace (#9330), closes #9330
  • 62e718f e2e: add workflow dispatch to launch manually
  • 762b0ec core: add storybook on executions filters (#9354), closes #9354

⚠️ Breaking Changes

All Editions: Executions Endpoint Now Requires filename for FILEtype Inputs

Starting with 0.24, uploading a file to an input of type FILE requires using:

  1. The part name for the input ID → the key must be set to the id of your FILE-type input and the value to @path e.g. myfile=@/path/to/test.txt
  2. The part filename attribute for the file's name → this must include the filename keyword as a key, and filename and its extension as value, e.g. filename=test.txt.

Let’s take the following flow as an example:

id: demo
namespace: company.team

inputs:
  - id: myfile
    type: FILE

tasks:
  - id: print_file_content
    type: io.kestra.plugin.core.log.Log
    message: "{{ read(inputs.myfile) }}"

To execute that flow via curl:

  • Before 0.24 (now deprecated):
curl -v "http://localhost:8080/api/v1/executions/company.team/demo" \
    -H "Content-Type:multipart/form-data" \
    -F "files=@/tmp/test.txt;filename=myfile"
  • Since 0.24:
curl -v "http://localhost:8080/api/v1/executions/company.team/demo" \
    -H "Content-Type:multipart/form-data" \
    -F "myfile=@/tmp/test.txt;filename=test.txt"

In short, you must use the input ID as the part name and provide the real file name as the filename attribute. Refer to issue #5987 for details.


OSS: Basic Authentication Now Required

Basic authentication is now mandatory for all open-source Kestra deployments, including local and development environments. The enabled flag is ignored; users must set both a username and password to access the UI and API.

Credentials can be configured via the Setup Page in the UI or directly in configuration:

kestra:
  server:
    basicAuth:
      username: admin@kestra.io
      password: Admin1234

For production, set a valid email address and a strong password in your configuration.


Enterprise Edition: IAM and API Endpoint Changes

To streamline API usage, reduce ambiguity, and improve security and manageability for large organizations, the IAM and related API endpoints have been significantly revised in 0.24. These changes consolidate user, group, and role management around explicit, well-defined routes and permissions, and remove redundant or confusing API paths.

Global API Changes:

  • /v1/api/{tenant}/me moved to /v1/api/me
  • /v1/api/cluster moved to /v1/api/instance
  • All /v1/api/{tenant}/users endpoints are removed:
    • Use /v1/api/users (instance-level, Superadmin only)
    • Use /v1/api/{tenant}/tenant-access for tenant access management
    • Use /v1/api/{tenant}/service-accounts for service account management
  • All Superadmin endpoints under /v1/api/tenants/{tenant}/groups, /bindings, /roles, /invitations, and /namespaces are removed.

Role APIs:

  • GET /v1/api/tenants/{tenant}/roles/[search|autocomplete] now only returns operation-relevant fields; tenantId, deleted, description, and permissions have been removed.
  • GET /v1/api/tenants/{tenant}/roles/{id} now only returns relevant fields; tenantId and deleted are removed.
  • POST/PUT /v1/api/tenants/{tenant}/roles: the request body now excludes id, tenantId, and deleted.

Group APIs:

  • GET /v1/api/tenants/{tenant}/groups/[search|autocomplete] now only returns id and name.
  • GET /v1/api/tenants/{tenant}/groups/{id} now only returns id, name, and description.
  • POST/PUT /v1/api/tenants/{tenant}/groups the request body now excludes id, tenantId, and deleted.
  • GET /v1/api/tenants/{tenant}/groups/{groupId}/members and /members/{userId} now return only id, username, displayName, and groups.

RBAC Updates:

  • Permissions API_TOKEN and ME are removed.
  • New permissions:
    • SERVICE_ACCOUNT for managing service accounts
    • INVITATION for managing invitations
    • TENANT_ACCESS for managing users in a tenant
    • GROUP_MEMBERSHIP for group membership management
  • The USER permission is now only required for SCIM integration.

Action Required for applications built on top of Kestra API:

  • Update any API clients or scripts that interact with affected endpoints.
  • Review permission assignments and RBAC configurations to use the updated permissions.
  • For file uploads, ensure the request format matches the new requirements.

All Editions: LangChain4j Plugin Renamed to Plugin AI

The langchain4j plugin, which remains in Beta, has been renamed to plugin-ai to reflect the framework-agnostic, declarative nature of that plugin. The plugin is now accessible from (kestra-io/plugin-ai)[https://github.com/kestra-io/plugin-ai] repository. All flow definitions and references to the previous io.kestra.plugin.langchain4j.* package must be updated to the new io.kestra.plugin.ai.* namespace.

Example (0.23):

id: chat_completion
namespace: company.team

inputs:
  - id: prompt
    type: STRING

tasks:
  - id: chat_completion
    type: io.kestra.core.plugin.langchain4j.completion.ChatCompletion
    provider:
        type: io.kestra.plugin.langchain4j.provider.GoogleGemini
        apiKey: "{{secret('GOOGLE_API_KEY')}}"
        modelName: gemini-2.5-flash
    messages:
      - type: SYSTEM
        content: You are a helpful assistant, answer concisely, avoid overly casual language or unnecessary verbosity.
      - type: USER
        content: "{{inputs.prompt}}"

Example (0.24):

id: chat_completion
namespace: company.team

inputs:
  - id: prompt
    type: STRING

tasks:
  - id: chat_completion
    type: io.kestra.plugin.ai.completion.ChatCompletion
    provider:
      type: io.kestra.plugin.ai.provider.GoogleGemini
      apiKey: "{{ secret('GOOGLE_API_KEY') }}"
      modelName: gemini-2.5-flash
    messages:
      - type: SYSTEM
        content: You are a helpful assistant, answer concisely, avoid overly casual language or unnecessary verbosity.
      - type: USER
        content: "{{inputs.prompt}}"

Make sure to update all flow definitions and provider types to use the new package and repository. For more information, refer to the plugin-ai repository.

Contributors

We'd like to thank the following people for their contributions:
AJ Emerich, Abhilash T, Aditya, Anna Geller, Anusha G H, Bart Ledoux, Barthélémy Ledoux, Biplab Bera, Daniel Rivas, Devesh Kumar, Emil Shakirov, Florian Hussonnois, François Delbrayelle, GitHub, GitHub Action, JAGADEESH E, Karthik D, Karuna Tata, Kelvin Yim, Loïc Mathieu, Ludovic DEHON, Malay Dewangan, Malaydewangan09, MilosPaunovic, Miloš Paunović, Nicolas K., Piyush Bhaskar, Piyush-r-bhaskar, Prayag, Rishi Jat, Roman Acevedo, Sarthak Ladhwe, Satvik Kushwaha, Sjoerd Smink, Tanvir Ahmed, Tijn Koppert, YannC, YannC., ben8t, bishalbera, brian-mulier-p, brian.mulier, dependabot[bot], enumura, github-actions[bot], nKwiatkowski, rajatsingh23, rkitamu, skayliu, weibo1, yashmurthy98, yuri, yuri1969

Don't miss a new kestra release

NewReleases is sending notifications on new releases.