v0.19.0
Features
- jdbc-postgres: improve JSONB performance #4899 (Loïc Mathieu)
- Implements message protection for the JDBC Queue #4679 (Loïc Mathieu)
- handle QueueException on tests #4679 (Loïc Mathieu)
- webserver: Purge system flow created from blueprint at startup #4883 (brian.mulier)
- ui: Added trigger detail on flow triggers page and make icon clickable for webhook to copy link (#4914) #4914 (YannC)
- add Meilisearch plugin #4923 (Mathieu Gabelle)
- ui: provide a real duration input that validate it and generate it (#4955) #4955 (YannC)
- implement refresh token (#4833) #4833 (YannC)
- *****: schedule an execution on a fixed date #4924 (Loïc Mathieu)
- ui: warn usage of trigger variable in flow when executing (#4969) #4969 (YannC)
- cli: add version & commit on startup log (Ludovic DEHON)
- ui: refreshing the main dashboard (#4959) #4959 (Miloš Paunović)
- core: add support for dependsOn on input (#3610) #4972 (Florian Hussonnois)
- ui: add support for dependsOn on input (#3610) #4972 (Florian Hussonnois)
- add displayName to inputs (#4470) #5021 (Florian Hussonnois)
- ci: set PG14 as used docker image for validating compatibility (#5020) #5020 (YannC)
- core: add label rendering when an execution is triggered (flow and schedule only) (#5025) #5025 (Yoann Vernageau)
- core: provide convenience methods to build a Data property #5039 (Loïc Mathieu)
- ui: add multiple color schemes for dashboard (#5058) #5058 (Miloš Paunović)
- jdbc: make the JdbcQueueIndexer tolerant to flow topology fault #5062 (Loïc Mathieu)
- jdbc: emit async in a dedicated thread pool #5011 (Loïc Mathieu)
- ui: create different dashboard for flow overview (#5075) #5075 (Miloš Paunović)
- webserver: Add REST methods for task and trigger validation that accept JSON body (#3785) #3785 (rybandrei2014)
- *****: implement impersonate inside UI (#5092) #5092 (YannC)
- ui: Display input id as "id" in the execution overview page #5134 (Loïc Mathieu)
- ui: introduce in-app doc #5145 (brian.mulier)
- ui: conurrency view in flow page (#5150) #5150 (YannC)
- ui-ee: search for content in docs (brian.mulier)
- ui: light mode for in-app doc (brian.mulier)
- core: add support to validate worker groups #5189 (Florian Hussonnois)
Bug Fixes
- ui: improve scope filter select field (#4886) #4886 (Miloš Paunović)
- cli: allow HTTP header up to 32k #4889 (Loïc Mathieu)
- jdbc: handle duplicate key on flow topology save #4887 (Loïc Mathieu)
- core: handle array in outputs #4892 (Loïc Mathieu)
- #4827 (Anna Geller)
- #4873 (Anna Geller)
- ui: amend trigger logs flickering (#4894) #4894 (Miloš Paunović)
- ui: revert casing of a variable in a translation file (Miloš Paunović)
- #4895 (Anna Geller)
- jdbc: forEachItem tests that are flaky with SQLServer #4679 (Loïc Mathieu)
- ui: reflect changes in code after making them in topology (#4901) #4901 (Miloš Paunović)
- ui: remove cursor from logs and uppercase log levels (brian.mulier)
- ui: properly filter logs by level on running executions (brian.mulier)
- ui: don't duplicate read-only warning if existing (#4907) #4907 (Miloš Paunović)
- core: use subgroup package infos when available (#4908) #4908 (YannC)
- ui: enabled editor content mouse scroll (#4912) #4912 (Miloš Paunović)
- ui: remove passing input prop to editor (MilosPaunovic)
- ui: better handling of reflecting changes in code from topology (MilosPaunovic)
- ui: filter system namespace overview tab for system data (#4928) #4928 (Miloš Paunović)
- ui: filter system flows' executions tab for system data (#4929) #4929 (Miloš Paunović)
- ui: make sure the talk to us dialogs do not stack on eachother (#4930) #4930 (Miloš Paunović)
- ui: allow sorting triggers table on flow name (#4949) #4949 (Miloš Paunović)
- cli: make server help work (#4910) #4910 (yuri)
- ui: more explicite copy url for webhook trigger (YannC)
- webserver: missing params in file paths (#4966) #4966 (YannC)
- core: make flow plugin defaults override global ones #4900 (yuri1969)
- core: always add the secret consumer #4967 (Loïc Mathieu)
- jdbc: retry flaky tests forEachItem #4967 (Loïc Mathieu)
- ui: missing translation (#4968) (github-actions[bot])
- core: SchedulerScheduleOnDatesTest.recoverNoneMissing flakiness #4973 (Loïc Mathieu)
- core: handle Map & List and keep their original format in EscapeChar and Replace filters (#4979) #4979 (YannC)
- core: SchedulerScheduleOnDatesTest.recoverLASTMissing is flaky (Loïc Mathieu)
- ui: route was null in NamespaceDependenciesWrapper in production build (brian.mulier)
- message (Anna Geller)
- links in README (Anna Geller)
- release + flow info (Anna Geller)
- core: text block spaces removed (#5006) #5006 (Ludovic DEHON)
- jdbc: compatible with Postgres 14 (#5019) #5019 (YannC)
- ui: use nextExecutionDate to sort triggers on dashboard (#5018) (#5027) #5027 (Florian Hussonnois)
- ui: disable toggle for flows with disabled triggers (#5028) #5028 (Miloš Paunović)
- ui: pass flow id on creation only if exists (#5030) #5030 (Miloš Paunović)
- core: enchance error handling for conditional inputs #5032 (Florian Hussonnois)
- core: properly handle select input with expression (#5035) (#5036) #5036 (Florian Hussonnois)
- KV example and docs (Anna Geller)
- ui: adjust markdown renderer for logs (#5038) #5038 (YannC)
- core: Set task with type JSON was not working (brian.mulier)
- docs: update youtube link (Will Russell)
- core: Slash/backslash windows issue when listing all folders (#5065) #5065 (YannC)
- ui: missing translation + wrong property name in the trigger list #5061 (Loïc Mathieu)
- core: don't erase the evaluation lock when resetting the exec #5061 (Loïc Mathieu)
- core: fix namespace not exist when accessing kv for parent namespace #5054 (Florian Hussonnois)
- core: fix input expressions must be resolved with dependencies (#5037) #5063 (Florian Hussonnois)
- core: add validation for flow input dependencies (#5057) #5074 (Florian Hussonnois)
- docs: update basic.md (#5087) #5087 (Ikko Eltociear Ashimine)
- test: use micronaut MockBean in KVStoreServiceTest (Florian Hussonnois)
- core: lower the task title size #5093 (Loïc Mathieu)
- core: fix the Flow task documentation #5093 (Loïc Mathieu)
- ui: amend splitting of date filter (#5105) #5105 (Miloš Paunović)
- ui: confirm dialog box when deleting a single log (#5103) #5103 (YannC)
- ui: dashboard not showing 0 for triggers/flows (#5106) #5106 (Florian Hussonnois)
- core: property close the OutputStream in ScriptSerice #5110 (Loïc Mathieu)
- ui: Set default duration in duration picker (#5111) #5111 (YannC)
- ui: allow to send binary namespace files #5114 (Loïc Mathieu)
- webserver: use flowId parameter in trigger search method (#5113) #5113 (YannC)
- ui: create flow button from namespace flows list (#5117) #5117 (YannC)
- ui: made trigger toggle on dashboard work properly (#5119) #5119 (Miloš Paunović)
- ui: check for existance of a descripiton field (#5121) #5121 (Miloš Paunović)
- ui: interpret html in markdown in logs (#5122) #5122 (YannC)
- ui: Do not use value as key for scheduleDate datetime picker (#5123) #5123 (YannC)
- ui: amend spacing on dashboard (#5132) #5132 (Miloš Paunović)
- allowInput -> allowCustomValue (#5138) #5138 (Anna Geller)
- ui: show existing labels when editing label in execution page (#5133) #5133 (YannC)
- webserver: use String instead of URI to accept space in path (#5091) #5091 (YannC)
- ui: show input errors (#5139) #5139 (YannC)
- core: invalid usage of & instead of && #5143 (Loïc Mathieu)
- cli: invalid static access via Child class #5146 (Loïc Mathieu)
- ui: set proper chart color scheme default value (#5152) #5152 (Miloš Paunović)
- ui: filter next scheduled per namespace (#5162) #5162 (Miloš Paunović)
- ui: amend spacing on dashboard (#5163) #5163 (Miloš Paunović)
- webserver: enforce pagination (#4995) #4995 (yuri)
- ui: avoid creation of duplicate namespace files (#5165) #5165 (YannC)
- ui: bump ui-libs to fix shiki lang import issueà (brian.mulier)
- ui: update tree to display newly created folder when new file path is "folder/subfolder/file.txt" (#5166) #5166 (YannC)
- hide the triggers widget in the dashboard when no permission #5167 (Loïc Mathieu)
- core: allow executions of flow without FLOW permissions #5169 (Loïc Mathieu)
- core: use shortcircuit || instead of | #5171 (Loïc Mathieu)
- ui: amend showing welcome page in certain scenarios (#5172) #5172 (Miloš Paunović)
- ui: more tweaks to showing welcome page (#5174) #5174 (Miloš Paunović)
- ui: filter executions per namespace chart on selected namespace (#5175) #5175 (Miloš Paunović)
- ui: properly filter system executions when necessary (#5178) #5178 (Miloš Paunović)
- ui: set labels didn't work anymore #5180 (Loïc Mathieu)
- ui: add PAUSED to the list of concurrency slot #5184 (Loïc Mathieu)
- ui: can scroll sidebar on Docs page (brian.mulier)
- ui: properly handle relative links in docs (brian.mulier)
- docs: Leverage utm_campaign instead of duplicating utm_content in EE tooltips (#4925) #4925 (nicoallgood)
- ui: welcome page visibility tweaks (#5211) #5211 (Miloš Paunović)
- ui: show welcome page when no executions and no not tutorial flows (#5212) #5212 (Miloš Paunović)
- ui: executions component issue (#5213) #5213 (YannC)
- ui: missing breadcrumb on plugin page (Ludovic DEHON)
- ui: avoid blinking for level log navigation (Ludovic DEHON)
- webserver: add the system ns if not existing #5227 (Loïc Mathieu)
- webserver: removing the purge flow from the autoloader #5227 (Loïc Mathieu)
- ui: avoid showing errors until execute button is clicked (#5232) #5232 (Miloš Paunović)
- ui: issue in docs compnent (#5230) #5230 (YannC)
- ui: move the docs menu position (Ludovic DEHON)
- ui: audit logs should always be the last tab #5234 (Loïc Mathieu)
- ui: responsive documentation & title (Ludovic DEHON)
- ui: top link to internal documentation (Ludovic DEHON)
- ui: shiki layout failed on plugins page (Ludovic DEHON)
- ui: don't allow collapse of the doc since no layout for the collapse state (Ludovic DEHON)
- ui: prevent breaking of docs on certain pages (#5240) #5240 (Miloš Paunović)
- ui: missing icon on the doc (Ludovic DEHON)
- local-storage: Set windows path to linux path (#5248) #5248 (YannC)
- README typo (Anna Geller)
- ui: some links in doc were not working + enhanced light mode (brian.mulier)
- ui: links' color were wrong in the doc when in a div (brian.mulier)
- ci: no more docker build & E2E for tags build (brian.mulier)
- ci: publish maven even if E2E were skipped (brian.mulier)
- ci: restore github release on main workflow in case of skipped e2e (brian.mulier)
- ci: remove datahub plugin for now as it's not finished (brian.mulier)
Documentation
- document #4757 (Anna Geller)
Chores
- ui: add proper axios parameters to send cookies (#4888) #4888 (Miloš Paunović)
- ui: bump ui-libs for colors fix to take place (#4903) #4903 (Miloš Paunović)
- ui: add whitespace changes highlighting into diff editor (#4917) #4917 (Miloš Paunović)
- ui: remove blueprint browser tags on namespace section (#4926) #4926 (Miloš Paunović)
- deps: run dependabot checks for npm on friday, day after bugfix releases (MilosPaunovic)
- ui: regular dependency update (#4948) #4948 (Miloš Paunović)
- ui: auto generate translations for languages other than english (#4919) #4919 (github-actions[bot])
- deps: bump io.micronaut.platform:micronaut-platform (#4931) #4931 (dependabot[bot])
- ui: improve labeling of namespaces in listing (#4957) #4957 (Miloš Paunović)
- deps-dev: bump vite from 5.4.5 to 5.4.6 in /ui (#4963) #4963 (dependabot[bot])
- ui: auto generate translations for languages other than english (#4994) #4994 (github-actions[bot])
- deps-dev: bump @vitejs/plugin-vue from 5.1.3 to 5.1.4 in /ui (#4988) #4988 (dependabot[bot])
- deps: bump nl.basjes.gitignore:gitignore-reader (#5005) #5005 (dependabot[bot])
- deps: update gradle wrapper (Ludovic DEHON)
- ui: change and improve stats by namespace endpoint and parsing (#5010) #5010 (Miloš Paunović)
- deps: bump com.microsoft.playwright:playwright (#4932) #4932 (dependabot[bot])
- deps: bump commons-io:commons-io from 2.16.1 to 2.17.0 #5004 (dependabot[bot])
- deps: bump opensearchRestVersion from 2.16.0 to 2.17.0 #5003 (dependabot[bot])
- deps-dev: bump @typescript-eslint/parser in /ui (#4984) #4984 (dependabot[bot])
- ui: show decimal places for main numbers on dashboard (#5016) #5016 (Miloš Paunović)
- deps: bump posthog-js from 1.161.3 to 1.162.0 in /ui (#4986) #4986 (dependabot[bot])
- deps: bump vue from 3.5.5 to 3.5.8 in /ui (#5008) #5008 (dependabot[bot])
- deps: upgrade Protobuf to 3.25.5 (#5014) #5014 (Loïc Mathieu)
- deps: bump flyingSaucerVersion from 9.9.1 to 9.9.4 (#5001) #5001 (dependabot[bot])
- ui: uniform graph colors on main dashboard (#5012) #5012 (Miloš Paunović)
- ui: uniform the height of toggl table cell (#5023) #5023 (Miloš Paunović)
- core: replace deprecated RandomStringUtils methods #5007 (Ludovic DEHON)
- deps: bump @vue-flow/core from 1.41.1 to 1.41.2 in /ui (#4983) #4983 (dependabot[bot])
- deps: bump @rollup/rollup-linux-x64-gnu in /ui (#4987) #4987 (dependabot[bot])
- deps-dev: bump monaco-editor from 0.51.0 to 0.52.0 in /ui (#4985) #4985 (dependabot[bot])
- deps-dev: bump @shikijs/markdown-it from 1.17.6 to 1.18.0 in /ui (#4990) #4990 (dependabot[bot])
- deps: bump com.github.oshi:oshi-core from 6.6.3 to 6.6.4 #4950 (dependabot[bot])
- core: warning compilation #5009 (Ludovic DEHON)
- ui: auto generate translations for languages other than english (#5029) #5029 (github-actions[bot])
- core: add schema description to inputs #5031 (Florian Hussonnois)
- cicd: rockset shutdown (Ludovic DEHON)
- ui: dashboard improvements (#5053) #5053 (Miloš Paunović)
- ui: auto generate translations for languages other than english (#5059) #5059 (github-actions[bot])
- ui: amend default chart color scheme (#5067) #5067 (Miloš Paunović)
- ui: auto generate translations for languages other than english (#5068) #5068 (github-actions[bot])
- ui: improve dashboard styling (#5070) #5070 (Miloš Paunović)
- ui: auto generate translations for languages other than english (#5076) #5076 (github-actions[bot])
- ui: amend color scheme for dashboard charts (#5080) #5080 (Miloš Paunović)
- ui: auto generate translations for languages other than english (#5081) #5081 (github-actions[bot])
- ui: regular dependency update (#5082) #5082 (Miloš Paunović)
- ui: uniform translation keys (#5088) #5088 (Miloš Paunović)
- ui: add tooltips to doughnut chart (#5094) #5094 (Miloš Paunović)
- ui: improve chart look and feel (#5096) #5096 (Miloš Paunović)
- ui: improve date labels on charts (#5097) #5097 (Miloš Paunović)
- deps: bump nl.basjes.gitignore:gitignore-reader #5083 (dependabot[bot])
- deps: bump org.jooq:jooq from 3.19.11 to 3.19.12 #5084 (dependabot[bot])
- deps: bump com.google.guava:guava from 33.3.0-jre to 33.3.1-jre #5086 (dependabot[bot])
- ui: improve dashboard link handling (#5108) #5108 (Miloš Paunović)
- ui: regular dependency update (#5120) #5120 (Miloš Paunović)
- ui: amend color of input desciptions (#5125) #5125 (Miloš Paunović)
- ui: rename default scheme to classic (#5129) #5129 (Miloš Paunović)
- ui: auto generate translations for languages other than english (#5130) #5130 (github-actions[bot])
- ui: uniform dashboard related translation strings (#5131) #5131 (Miloš Paunović)
- ui: amend news date text color (#5135) #5135 (Miloš Paunović)
- ui: remove extra character from doughnut chart tooltip (MilosPaunovic)
- ui: amend linter build issue (MilosPaunovic)
- ui: remove obsolete console statement (MilosPaunovic)
- ui: prevent using 'this' in vue templates (#5187) #5187 (yuri)
- ui: revert shiki color scheme for dark mode (#5235) #5235 (Miloš Paunović)
- ui: render flow description as markdown (#5236) #5236 (Miloš Paunović)
- cicd: remove github discussions link (Ludovic DEHON)
- version: update to version 'v0.19.0'. (brian.mulier)
Commits
- a52c59a: fix(core, script): check default enable to not FALSE (Loïc Mathieu) #4890
- b072848: Auto-generate translations from en.json (#4893) (github-actions[bot]) #4893
- bfef9ba: Update basic.md (Anna Geller)
- 0d04553: feat(core,jdbc): changes needed for backup and restore (Loïc Mathieu) #4864
- 6f3f425: closes #4951 (Anna Geller)
- b19a9bc: Auto-generate translations from en.json (#4952) (github-actions[bot]) #4952
- 71aeb56: Auto-generate translations from en.json (#4953) (github-actions[bot]) #4953
- 3c6aadf: Auto-generate translations from en.json (#4970) (github-actions[bot]) #4970
- 517d26e: feat(core); log the stacktrace in case of plugin scanning error (Loïc Mathieu)
- 280af82: Merge branch 'develop' of https://github.com/kestra-io/kestra into develop (Anna Geller)
- 7cfd334: Merge branch 'develop' of https://github.com/kestra-io/kestra into develop (Anna Geller)
- 7669669: feat(core, jdbc): allow to trigger flows from a transient state (Loïc Mathieu) #4975
- 2134e6b: feat(core, webserver): add an URL pointing to the UI to the create execution endpoint (Loïc Mathieu) #5026
- 29e641d: Merge branch 'develop' of https://github.com/kestra-io/kestra into develop (Anna Geller)
- 8bdea24: Auto-generate translations from en.json (#5109) (github-actions[bot]) #5109
- 4f92104: Auto-generate translations from en.json (GitHub Action) #5149
- 8adef1e: Auto-generate translations from en.json (#5151) (github-actions[bot]) #5151
- replace HTML4-obsolete align attribute with CSS's text-align #5144 (hainenber)
- d967f36: Revert "doc: replace HTML4-obsolete align attribute with CSS's text-align" (Loïc Mathieu)
- 5b3829d: Auto-generate translations from en.json (#5168) (github-actions[bot]) #5168
- 2bfb0b6: Auto-generate translations from en.json (GitHub Action) #5170
- 3bb41e2: fix(core,webserver): use more performant replace() instead of replaceAll() when possible (Loïc Mathieu) #5171
- 2cfe5fb: fix(core,script,tests): various code improvements (Loïc Mathieu) #5171
- 306c72f: Auto-generate translations from en.json (#5185) (github-actions[bot]) #5185
- 797f34c: Moved "Language" selection to "Localization" section next to Timezone and Date format settings #5193 (#5196) (k sidharth) #5196
- b06f068: Auto-generate translations from en.json (#5197) (github-actions[bot]) #5197
- 9952796: Add namespace KV JSON Type validation (#5190) (AhnYoungJin) #5190
- Execution chart issue on the Executions page (#5195) #5195 (Karthik D)
- 6eaf5eb: Wrong Password Toast Improvement-Issue-4012 (#5206) (Sai Mounika Peri) #5206
- 792e11a: Fix/readme (#5242) (Anna Geller) #5242
- a930277: Update README.md (Anna Geller)
- 48676f4: Update README.md (Anna Geller)
Breaking Changes
Inputs
The options
property in the MULTISELECT
input has been renamed to values
to align with the SELECT
input type. However, the alias has been retained, so using options
will still work. We recommend renaming it to values
to make your flows future-proof.
Refresh Token (EE)
Before upgrading to 0.19.0, please note that we now require the encryption key to be set in your Kestra configuration, as it is used to facilitate several security-related features, including:
- authentication
- backup & restore functionality
- JWT signature for refresh tokens
SECRET
-type inputs.
To configure this, add the following to your application.yaml
file:
kestra:
encryption:
secret-key: pleaseChangeThisSecret # ✅ mandatory!
This encryption key should already be present if you use any SECRET
-type input. If not, ensure it is added before upgrading to Kestra 0.19.0; otherwise, Kestra EE will not start, and you won't be able to log in.
The encryption secret key must be at least 256 bits (32 ASCII characters).
Make sure to set the secret pleaseChangeThisSecret
to a custom value. This secret never expires, but its corresponding refresh token has a lifetime of 30 days, similar to a JWT token with a default lifetime of 1 hour.
If you prefer to use a different secret for the JWT signature of the refresh token than the one used as your standard encryption key, you can optionally modify this part of your Kestra configuration:
micronaut:
security:
token:
jwt:
signatures:
secret:
generator:
secret: "${JWT_GENERATOR_SIGNATURE_SECRET:pleaseChangeThisSecret}" # ✅ optional
To delete a refresh token, send a DELETE
request to /users/{id}/refresh-token
. This is useful if you suspect your computer has been compromised.
For any questions or assistance with the upgrade, please contact our support team via our Customer Portal or your dedicated Slack channel.
State Store
State Store has been deprecated, and all plugins that used State Store now leverage KV Store. If you were using State Store, ensure you run this command after upgrading to Kestra 0.19.0: /app/kestra sys state-store migrate
. Refer to the migration guide for more details.
Core Plugins
- The
io.kestra.plugin.core.flow.EachParallel
andio.kestra.plugin.core.flow.EachSequential
tasks have been marked as deprecated. We recommend switching to the optimized and simplerio.kestra.plugin.core.flow.ForEach
task, which unifies both sequential and parallel execution depending on the configuredconcurrencyLimit
. - Flow-level plugin defaults will now overwrite global plugin defaults unless
forced: true
is added to the globalpluginDefaults
.
Adjusted Default Number of Worker Threads
We've reduced the number of worker threads started by default per worker, based on the number of processors available on the machine. This change is intended to improve reliability by limiting concurrency by default. For example, if you start a large number of concurrent task runs, Kestra will no longer attempt to process them across all available worker threads — instead, task runs will be queued and processed as quickly as your server can handle, based on the number of available CPUs.