Breaking Changes
Features
- core: replace new ArrayList by Collections.emptyList() #7612 (Loïc Mathieu)
- core: use HashMap.newHashMap(int) #7612 (Loïc Mathieu)
- core: improve merging outputs by merging them at the task level #7612 (Loïc Mathieu)
- add examples for conditions - 3 (#7657) #7657 (Shruti Mantri)
- add examples for flow conditions (#7659) #7659 (Shruti Mantri)
- add example for expression condition (#7660) #7660 (Shruti Mantri)
- ui: add markdown formatting to flow run dialog (#7663) #7663 (Miloš Paunović)
- core-ee: #2838 add audit log shipper (#7701) #7701 (Nicolas K.)
- core: allow reading file from any namespaces #7723 (Loïc Mathieu)
- core: add new crudEventType value #7711 (YannC)
- core: #7721 add namespace to pebble file functions (#7729) #7729 (Nicolas K.)
- webserver: mask the secret() function result from eval outputs #7738 (Loïc Mathieu)
- core: handle worker group fallback inside the scheduler #7745 (Loïc Mathieu)
- core: #5467 add namespaces in the namespaceFiles parameter (#7749) #7749 (Nicolas K.)
- core: add outputs to the Flow trigger #7750 (Loïc Mathieu)
- core: custom log filter #7779 (Loïc Mathieu)
- core-ee: add json format to file log exporter (#7789) #7789 (Nicolas K.)
- ui: introduce kv() and secret() pebble autocompletions #7794 (brian.mulier)
- core: add execution state in Pebbe context #7795 (Loïc Mathieu)
- core: afterExecution tasks #7791 (Loïc Mathieu)
- build: configure heap size to max 50% of available memory (#7800) #7800 (Loïc Mathieu)
- core: redact KESTRA_JAVA_OPTS from the env available to executions #7805 (Loïc Mathieu)
- add finally to the flow assets in basic.md (#7857) #7857 (Shruti Mantri)
- core: add afterExecution to the topology #7860 (Loïc Mathieu)
- ui: add
afterExecution
block to no code editor (#7848) #7848 (Miloš Paunović) - cli: add new --all option to plugin install cmd (#7375) #7877 (Florian Hussonnois)
- core: add Kestra env name and URL to the expression context #7884 (Loïc Mathieu)
- webserver: add Kestra URL to the config endpoint #7884 (Loïc Mathieu)
- ui: add copy button to kv store listing rows (#7907) #7907 (Miloš Paunović)
- ui: implement a default tab setting for flows (#7917) #7917 (Miloš Paunović)
- ui: add the option to copy single/all logs to clipboard (#7755) #7755 (rajatsingh23)
- ui: add beta badge global component (#7934) #7934 (Miloš Paunović)
- core: add correlationId to the Flow trigger #7931 (Loïc Mathieu)
- *****: allow disabling flow logs and use a specific logger for executions, tasks and triggers #7891 (Loïc Mathieu)
- core: require existing namespace #7927 (Loïc Mathieu)
- save last dashboard used in local storage (#7948) #7948 (YannC)
- allow to specify a parent namespace in the flow updates command, and the possibility to allow child namespace in the flow bulk create command (#7956) #7956 (YannC)
- ui: introduce global KV Store view #7963 (brian.mulier)
- core: allow null or empty proxy address to bypass proxy conf #7975 (Loïc Mathieu)
- core: speed up namespace file download and add a log & metrics #7872 (Ludovic DEHON)
- core: #7932 add file exist comportment to NamespaceFiles (#7979) #7979 (Nicolas K.)
- core: add new subkey arg to secret pebble function #7958 (Florian Hussonnois)
- multi panel editor without the refactor (#7971) #7971 (Barthélémy Ledoux)
- parse docs is 2 steps to avoid user waiting with nothing (#7149) #7149 (Barthélémy Ledoux)
- ui: introduce global Secrets page #8020 (brian.mulier)
- docs: add example for best practice with multiline json http post request (#8023) #8023 (AJ Emerich)
- core: #5467 add inheritance for KV in pebble and Get task (#8031) #8031 (Nicolas K.)
- cleaner multipanel tab move (#8029) #8029 (Barthélémy Ledoux)
Bug Fixes
- cicd: missing acls for test reports (Ludovic DEHON)
- core: validation error when timeWindow.type is null #7655 (Loïc Mathieu)
- core: MultipleCondition documentation #7655 (Loïc Mathieu)
- avoid crash on injectDefault (YannC)
- core: avoid duplicates in plugins subgroups + properly retrieve subgroup title (brian.mulier)
- cli: fix regression on CLI plugin doc cmd #7713 (Florian Hussonnois)
- core: stop Docker runner gracefully #7714 (yuri1969)
- ui: prevent context docs open on editor custom blueprints click (#7716) #7716 (Miloš Paunović)
- align to EE (YannC)
- runner-memory: delete MemorySchedulerTriggerState back due to cherry-pick (YannC)
- ui: improved fetch of type for pluginDoc and avoid removing doc if map has "type" as property but without doc (like ENUM value) (#7727) #7727 (YannC)
- demo: on pages stop showing the docs without a button (Bart Ledoux)
- repair collapsed menu submenus (Bart Ledoux)
- flow editor: enhance behavior when switching file tabs (#7722) #7722 (Barthélémy Ledoux)
- tests: reject promise with 404 instead of empty resolve if non-mocked store call in flowAutoCompletionProvider.spec.ts (brian.mulier)
- jdbc: resubmit worker job to the good worker group #7741 (Loïc Mathieu)
- ci: generate_translations.py is now deleting keys that are no longer in en translation to avoid ghost translations (brian.mulier)
- core: failing schedule test (#7783) #7783 (Nicolas K.)
- cli: fix double shutdown warn messages #7775 (Florian Hussonnois)
- core: flaky test ExitTest.shouldExitAndKillTheExecution() #7784 (Loïc Mathieu)
- jdbc: flaky tests JdbcServiceLivenessCoordinatorTest #7784 (Loïc Mathieu)
- core: wait for service-manager-task thread to be stopped #7776 (Florian Hussonnois)
- tests: increase seconds diff between dates (#7785) #7785 (YannC)
- core: #7740 http configuration bearer token may change to basic because of allowFailed (#7788) #7788 (Nicolas K.)
- jdbc: return correct total when paginating custom dashboard chart (#7790) #7790 (YannC)
- webserver: add endpoint for inherited secrets #7782 (brian.mulier)
- ui: make switch view buttons from dashboard editor the same as flow editor ones (brian.mulier)
- ui: remove errors from dashboard validation if it's fixed (brian.mulier)
- core: fix properly map MavenPluginRepositoryConfig #7796 (Florian Hussonnois)
- docs: 2025 get started video (Will Russell)
- core: allowedNamespace is already called in the KvStoreService #7850 (Loïc Mathieu)
- core: missing afterExecution in FlowForExecution #7860 (Loïc Mathieu)
- deps: move OTLP metrics lib to CLI to avoid warning in tests #7861 (Loïc Mathieu)
- core: Avoid calling Worker post construct method twice #7869 (Loïc Mathieu)
- ui: display back core property if not in a task (YannC)
- docs: add parallel example (Will Russell)
- remove labels from an execution (#7256) #7256 (Malay Dewangan)
- docs: schedule example (Will Russell)
- docs: fail examples (Will Russell)
- docs: typos (Will Russell)
- ui: use container queries for dashboard (#7889) #7889 (Barthélémy Ledoux)
- core: avoid ClassCastException when parsing flow inputs (#7882) #7890 (Florian Hussonnois)
- ui: amend displaying large amount of logs (#7923) #7923 (Miloš Paunović)
- disable micronaut otel by default #7921 (Florian Hussonnois)
- cli: return exit 0 in CLI plugins cmd #7925 (Florian Hussonnois)
- OpenTelemetry should be optional #7928 (Florian Hussonnois)
- *****: Improve log timestamp precision + allow to override timestamp… (#7847) #7847 (YannC)
- ui: amend dependabot errors with parsing of package-lock.json file (#7941) #7941 (Miloš Paunović)
- core: possible NPE if no manifest #7940 (Loïc Mathieu)
- ui: prevent filter text prefix to show up when searching locally (#7947) #7947 (Miloš Paunović)
- core: triggers don't have an execution ID already #7949 (Loïc Mathieu)
- core-ee: NPE when execution labels are null (#7950) #7950 (Nicolas K.)
- Adapt the usage of the new query filter for custom dashboard (#7935) #7935 (YannC)
- only run posthog in prod mode (#7952) #7952 (Barthélémy Ledoux)
- core: add metric Publish task doc & icon #7960 (Loïc Mathieu)
- update ui-libs (Bart Ledoux)
- remove old '$eq' to avoid error in dashboard (YannC)
- prevent using LABELS in JDBC (YannC)
- ui: filter tests were not up-to-date #7963 (brian.mulier)
- cicd: display ui unit test status (Ludovic DEHON)
- ui: change plugin doc properly upon switching plugin type (brian.mulier)
- core: working dir interface contract by putting back putFile(path, content) (#7980) #7980 (Nicolas K.)
- ui: include parameters into request for plugin schema fetching (#8002) #8002 (Miloš Paunović)
- core: amend server start announcements #7977 (yuri1969)
- build: Gradle space-assignment deprecation #7978 (yuri1969)
- restarting trigger does not break the list anymore (#8004) #8004 (YannC)
- core: race in the FlowListener #7974 (Loïc Mathieu)
- core: race while initializing trigger + possible duplicate update #7974 (Loïc Mathieu)
- remove unwanted change in Curl (Bart Ledoux)
- ui: amend task source tabs colors (#8010) #8010 (Piyush Bhaskar)
- platform: move slf4j api to enforce platform to fix it's version in test (#8007) #8007 (Nicolas K.)
- core: Handling for trailing slash in the KESTRA_URL configuration (#6373) #6373 (benjoEK1337)
- make KestraFilter works with legacy default dashboard + avoid showing custom dashboard in namespace/flow pages (#8012) #8012 (YannC)
- moved the logic to the backend (#5917) #5917 (Rudhra Bharathy G)
- make absolute date work with metrics (#8015) #8015 (YannC)
- use correctly context-path when needed (#8018) #8018 (YannC)
- ui: prevent function parameters autocompletion from deleting parenthesis #8020 (brian.mulier)
- ui: handle properly layout of global Secrets when there is a secret manager (brian.mulier)
- core: ensure defaults can be injected in flows (#3206) #8019 (Florian Hussonnois)
- ui: allow multi label filtering (#8022) #8022 (Miloš Paunović)
- use correct property for blueprint type (YannC)
- ui: fail-safe secrets API calls (brian.mulier)
- ui: amend operator value of labels inside the filter (#8028) #8028 (yuri)
- ui: fail-safe secrets API calls on global secrets view (brian.mulier)
- core: fix NPE when closing standalone runner #8030 (Florian Hussonnois)
- ui: make sure global secret view iterates over all secrets (brian.mulier)
- datetime filtering issues (#8027) #8027 (YannC)
Documentation
- fix typo in storage reverse task title (#7667) #7667 (AJ Emerich)
- kv pebble (#7886) #7886 (Anna Geller)
Code Refactoring
- ui: remove the obsolete console statement (#7887) #7887 (Miloš Paunović)
- move flow editor logic into flow store (#7968) #7968 (Barthélémy Ledoux)
Builds
- deps: bump com.github.oshi:oshi-core from 6.6.6 to 6.7.0 #7645 (dependabot[bot])
- deps: bump nl.basjes.gitignore:gitignore-reader #7644 (dependabot[bot])
- deps: bump org.owasp.dependencycheck from 12.0.2 to 12.1.0 #7427 (dependabot[bot])
- deps: bump software.amazon.awssdk:bom from 2.30.16 to 2.30.31 #7642 (dependabot[bot])
- deps: bump opensearchRestVersion from 2.18.0 to 2.19.1 #7643 (dependabot[bot])
- deps: bump com.google.cloud:libraries-bom from 26.54.0 to 26.56.0 #7699 (dependabot[bot])
- deps: bump org.opensearch.client:opensearch-java #7424 (dependabot[bot])
- deps: bump jacksonVersion from 2.18.2 to 2.18.3 #7641 (dependabot[bot])
- deps: bump robinraju/release-downloader from 1.11 to 1.12 #7773 (dependabot[bot])
- deps: bump com.azure:azure-sdk-bom from 1.2.31 to 1.2.32 #7761 (dependabot[bot])
- deps: bump com.gorylenko.gradle-git-properties #7762 (dependabot[bot])
- deps: bump org.testcontainers:junit-jupiter from 1.20.5 to 1.20.6 #7763 (dependabot[bot])
- deps: bump org.opensearch.client:opensearch-java #7764 (dependabot[bot])
- deps: bump com.github.docker-java:docker-java from 3.4.1 to 3.4.2 #7766 (dependabot[bot])
- deps: bump org.jsoup:jsoup from 1.18.3 to 1.19.1 #7769 (dependabot[bot])
- deps: bump software.amazon.awssdk.crt:aws-crt #7770 (dependabot[bot])
- deps: bump org.testcontainers:testcontainers #7772 (dependabot[bot])
- deps: bump software.amazon.awssdk:bom from 2.30.31 to 2.30.36 #7771 (dependabot[bot])
- deps: bump io.micrometer:micrometer-core from 1.14.3 to 1.14.5 #7786 (dependabot[bot])
- deps: bump @babel/helpers from 7.26.9 to 7.26.10 in /ui (#7841) #7841 (dependabot[bot])
- deps: bump @babel/runtime-corejs3 from 7.26.9 to 7.26.10 in /ui (#7840) #7840 (dependabot[bot])
- deps: bump software.amazon.awssdk:bom from 2.30.36 to 2.31.1 #7895 (dependabot[bot])
- deps: bump protobufVersion from 3.25.5 to 4.30.1 #7897 (dependabot[bot])
- deps: bump software.amazon.awssdk.crt:aws-crt #7899 (dependabot[bot])
- deps: bump com.github.oshi:oshi-core from 6.7.0 to 6.7.1 #7901 (dependabot[bot])
- deps: bump dorny/test-reporter from 1 to 2 #7903 (dependabot[bot])
- deps: bump aquasecurity/trivy-action from 0.29.0 to 0.30.0 #7904 (dependabot[bot])
- deps: bump nl.basjes.gitignore:gitignore-reader #7898 (dependabot[bot])
- deps: bump org.jooq:jooq from 3.19.18 to 3.20.2 #7902 (dependabot[bot])
- deps: bump org.slf4j:slf4j-api from 2.0.16 to 2.0.17 #7646 (dependabot[bot])
- deps: bump org.aspectj:aspectjweaver from 1.9.22.1 to 1.9.23 #7900 (dependabot[bot])
- deps: bump pdfjs-dist from 4.10.38 to 5.0.375 in /ui (#7942) #7942 (dependabot[bot])
- deps: bump com.microsoft.playwright:playwright #7999 (dependabot[bot])
- deps: bump com.google.cloud:libraries-bom from 26.56.0 to 26.57.0 #7992 (dependabot[bot])
- deps: bump com.github.oshi:oshi-core from 6.7.1 to 6.8.0 #7993 (dependabot[bot])
- deps: bump software.amazon.awssdk:bom from 2.31.1 to 2.31.6 #7997 (dependabot[bot])
- deps: bump software.amazon.awssdk.crt:aws-crt #7998 (dependabot[bot])
Chores
- deps: bump flyingSaucerVersion from 9.11.3 to 9.11.4 #7519 (dependabot[bot])
- deps: bump org.testcontainers:testcontainers #7525 (dependabot[bot])
- ui: improve the topology tooltip label for adding task button (#7656) #7656 (Miloš Paunović)
- deps: upgrade ui-libs version to v0.0.154 (YannC)
- ui: properly sanitize markdown content before rendering (#7662) #7662 (Miloš Paunović)
- ui: make sure chart stacks are following the same order every time (#7664) #7664 (Miloš Paunović)
- ui: properly sanitize markdown content before rendering (#7697) #7697 (Miloš Paunović)
- deps: regular dependency update (#7705) #7705 (Miloš Paunović)
- ui: auto expand first element in execution overview cascaders (#7715) #7715 (Miloš Paunović)
- core: make registry unregister usable with immutable list (Ludovic DEHON)
- ui: properly sanitize markdown content before rendering (#7724) #7724 (Miloš Paunović)
- ui: uniforming empty state for components (#7737) #7737 (Miloš Paunović)
- translations: localize to languages other than English (#7739) #7739 (github-actions[bot])
- ui: use uniformed pagination component for custom dashboard tables (#7744) #7744 (Miloš Paunović)
- translations: localize to languages other than English (#7746) #7746 (github-actions[bot])
- ui: remove single empty space between label key and value so it can be copied (#7774) #7774 (Miloš Paunović)
- ui: re-order namespace tabs (#7778) #7778 (Miloš Paunović)
- translations: localize to languages other than English (#7780) #7780 (github-actions[bot])
- ui: respect line numbers prop as part of editor options (#7781) #7781 (Miloš Paunović)
- core: disable OTLP metrics on tests #7784 (Loïc Mathieu)
- update ui-libs (Bart Ledoux)
- ui: add the ability to change word wrap and to copy the preview output content (#7801) #7801 (Miloš Paunović)
- translations: localize to languages other than English (#7803) #7803 (github-actions[bot])
- deps: regular dependency update (#7839) #7839 (Miloš Paunović)
- translations: localize to languages other than English (#7863) #7863 (github-actions[bot])
- ui: re-organize visuals for empty state component (#7866) #7866 (Miloš Paunović)
- deps: upgrade @kestra-io/ui-libs to 0.0.157 #7864 (Loïc Mathieu)
- ui: prevent node state history to be shown if there is no date present (#7867) #7867 (Miloš Paunović)
- core: add PluginVersioning interface and version for TaskRunner #7651 (Florian Hussonnois)
- ui: re-organize visuals for empty state component (#7875) #7875 (Miloš Paunović)
- ui: complete refactor of yaml utils (#7888) #7888 (Miloš Paunović)
- ui: create flow button on welcome page to start product tour (#7906) #7906 (Miloš Paunović)
- translations: localize to languages other than English (#7908) #7908 (github-actions[bot])
- ui: show loading skeletons on dashboard (#7417) #7417 (Piyush Bhaskar)
- ui: use the correct shadow on charts (#7752) #7752 (Piyush Bhaskar)
- ui: change display on gantt page for created & queued executions (#7706) #7706 (Piyush Bhaskar)
- ui: improve charts horizontal scrollbar (#7508) #7508 (Ash)
- translations: localize to languages other than English (#7909) #7909 (github-actions[bot])
- core: merge outputs only when necessary #7720 (Loïc Mathieu)
- ui: properly sanitize execution errors markdown content before rendering (#7914) #7914 (Miloš Paunović)
- translations: localize to languages other than English (#7915) #7915 (github-actions[bot])
- translations: localize to languages other than English (#7918) #7918 (github-actions[bot])
- change docker image used for AbstractTaskRunnerTest (YannC)
- translations: localize to languages other than English (#7929) #7929 (github-actions[bot])
- ui: remove the flow topology control button from image export (#7937) #7937 (Miloš Paunović)
- deps: regular dependency update (#7944) #7944 (Miloš Paunović)
- ui: introduce a refresh functionality to execution logs page (#7946) #7946 (Miloš Paunović)
- add jattach into our Docker image #7957 (Loïc Mathieu)
- add GraalVM plugin (Loïc Mathieu)
- ui: removing dynamic section of collapsible plugin properties (#8008) #8008 (Miloš Paunović)
- ui: highlight first item in global search bar autocomplete (#8009) #8009 (Piyush Bhaskar)
- refactor StorageInterfaceFactory to be a bean #8000 (Florian Hussonnois)
- ui: add anchors to plugin documentation (#8014) #8014 (Miloš Paunović)
- translations: localize to languages other than English (#8013) #8013 (github-actions[bot])
- ui: limit flow run dialog maximum height (#7938) #7938 (Satvik Kushwaha)
- ci: lower build-artifacts workflow so github release can use it (YannC)
- upgrade to version 'v0.22.0-rc1-SNAPSHOT' (Florian Hussonnois)
Commits
- 56406c6: feat(#7636): add default options for HttpClient (#7650) (Nicolas K.) #7650
- cd97705: feat(core, jdbc): DashboardRepository.findAll() (Loïc Mathieu) #7658
- 2c63112: feat(core, jdbc): dynamic worker group key (Loïc Mathieu) #7707
- 1726347: change email oss auth default (#7717) (ben8t) #7717
- f505f29: Add core plugin sanitychecks (#7592) (ben8t) #7592
- ui: move autocompletion to its own service (#7710) #7710 (brian-mulier-p)
- 4276a0a: Revert "fix(core): ThresholdFilter is now stricly lower" (Loïc Mathieu)
- c2e62d6: feat(core,jdbc): switch back to a cached thread pool for async JDBC queue (Loïc Mathieu) #7797
- 0a24a5d: Remove pebble function references that don't exist (#7698) (ben8t) #7698
- 71a59e7: Adjusted the CI to skip frontend and backend tests for commits/PRs containing the 'docs-only' text. #6729 (#7756) (Trinaya Kantevari) #7756
- 57c749d: Revert "Adjusted the CI to skip frontend and backend tests for commits/PRs co…" (#7910) (Anna Geller) #7910
- db71b56: Update documentation Switch core task (#6792) (ben8t) #6792
- c640b82: [fix] fix sleep assert comparison (#7924) (ben8t) #7924
- f4f8ecb: feat!: make kv pebble function raise error by default (#7855) (Florian Hussonnois) #7922
- 745c64c: feat(model, core): document tasks props that are internal storage URI (Loïc Mathieu) #7919
- 0ec2d88: Revert "build(deps): bump protobufVersion from 3.25.5 to 4.30.1" (Loïc Mathieu)
- 4a3d6b3: feat(core,jdbc): reset the trigger inside the JdbcExecutor (Loïc Mathieu) #7369