v2.0.1
MinorPublished on September 11, 2026
Changelog
🚀 Features
ai
a3ab8b5surface the AI Copilot with a button in the top bar (#19393), closes #19393
core
6c75b62report translation keys that render as their raw id at runtime (#19037), closes #19037 #19041
📘 Subtasks
version
137e9ecupdate to version '2.0.1'
🐛 Bug Fixes
ai
249e0e5grow the copilot composer around a prompt that is already in it when it opens (#19389), closes #19389
core
6d9d42cFlowServiceTest compilationff84cd1reject invalid BOOL input valuesd953f86mask secrets in log-to-file exception tracesd02c78frenew a stale CSRF cookie token instead of failing the initial setup with 403 access denied (#18965), closes #18965c22fda1drop the definitions of input types excluded from a schema (#19142) (#19231), closes #19142 #1923191d7f71stop LoopUntil after maxIterations instead of maxIterations + 1 (#19209), closes #19209f6fcb48private cache-control on tenant-scoped execution downloads9318eaeContent-Disposition filename injection on export endpointsd51059ftranslate the remaining hardcoded strings (#19129), closes #19129b5a85e9fix grammar issues in english UI text (#19127), closes #1912711642d6translate the hindi kill message instead of leaving it in english (#19126), closes #19126fcf92cfuse the global translator in the logs pager and plugin card templates (#19048), closes #19048 #19049283b86bthe browser back button no longer skips the page you came from (#19124), closes #18994 #1912474f5800stop the generator upper-casing state words and mangling casing in non-latin locales (#19036), closes #19036 #19046121f3e9translate sentence-initial nouns instead of keeping them in english (#19035), closes #19035 #1904421616ffmake the translation generator reroll and refuse english copies (#19032), closes #19032 #190404d303ealet the english-copy rule accept kestra entity nouns and product names (2.0 backport) (#19118), closes #191187561119inspect getDeadline() in DAILY_TIME_WINDOW branch of TimeWindowValidator, closes #18763303c025reject restart of a PAUSED executione85c9f2match HTTP allow/deny lists on the URI authority and re-check redirects
dashboards
05d026edrill-down page filters, clicked time bucket, drawer reload (#18988) (#19205), closes #18988 #19205
design-system
85d3369align the "last 30 days" filter value with the app's PT720H (#19141) (#19232), closes #19141 #192323c837f8drop the trailing comma that makes the manifest unparseable (#19315), closes #19257 #19315c484cbfapply-to option highlight in the interval filter (#19086), closes #19086
executions
bc3a6b3reject executing a soft-deleted flow by explicit revision76fe90aunify webhook 404 so flow existence isn't leaked9398b12api action downloads the execution json as a link (#18902), closes #18902bb7349eshow the task run state-change hints again (#19038), closes #19038 #19045
executor
6008c2edo not resume a Pause twice when its pauseDuration expires after a manual resume (#18597), closes #18507 #18597
flows
a572fc1clear the draft flag when deleting a flow's draft headfc2225fbreadcrumb navigation from execution to flow edit no longer blanks the page (#18997) (#19111), closes #18997 #19111
plugins
1f04106pebble docs table renders its own text as HTML (#19323), closes #19323
scheduler
d0476c1publish vNode assignments as immutable snapshotsbb88cbfstop() lost on a scheduling loop still queued for start2f3200cspurious thread-starvation warning on fresh start744b28bcompile the unparseable-flow trigger test against the 2.0.x store API, closes #191378a2162aan unparseable flow no longer stalls its scheduling loop or floods the logs (#19137), closes #19137
tests
ecfe04eDefaultSchedulerTest liveness-manager stalls and vacuous assertions
triggers
663d093timezone picker for the Schedule trigger in the no-code form (#18963), closes #18381 #18963
global
c1f4190prevent NPE when Switch task has only defaults and no cases, closes #183571f6d142use schedule timezone for cron validation20fd0fereject unsatisfiable schedule cron expressions
🏭 Tests
core
715011dcover the translation key usage rules (#19034), closes #19034 #19043
🔄️ Changes
core
495cfdadelete the components and utils nothing imports (2.0 backport) (#19264), closes #19218 #19264
iam
331c2f4centralize repository namespace ACL into one policy bean (#19145), closes #1914592fe374name no-ACL repository reads *WithoutAcl and split findLatestForStates (#18944), closes #18944
🛠 Build
core
586c613keep the release branches translated with the auto-translate bot (#19203), closes #19201 #1920394966a0generate the translations of a pull request from a fork on demand (#19192), closes #19185 #1919298cccf5tell the enterprise repository when a push changes the translation keys (#19191), closes #19184 #1919127d4d61declare the node version the translation scripts need (#19190), closes #19186 #191905508835make translations:check run the PR gate before the comparer (#19136), closes #19131 #19136c571150run the translation gate on every push to develop and the release branches (#19135), closes #19130 #191353f33e2dcheck the namespace of runtime-built translation keys in the gate (#19033), closes #19033 #19042c67de14fail the translation gate on stale fingerprints in the locale files (#19031), closes #19031 #19039
deps
11dfc77translations check no longer downloads tsx (#19094), closes #19094
tests
6887c66one script naming convention across the frontend packages (2.0 backport) (#19257), closes #19257
📝 Documentation
core
637b634reword the 'An unexpected error occurred' UI error in EE edition
tests
fece264describe the translation gate on pushes, the OSS to EE dispatch and the fork workflow (#19197), closes #19195 #19197dee9de2correct build-comment's note on what an empty output is for (#19128), closes #19128
Contributors
We'd like to thank the following people for their contributions: Aradhya Sharma, Barthélémy Ledoux, Claude Opus 5, Fayupable, Florian Carre, Florian Hussonnois, GitHub, Loïc Mathieu, MilosPaunovic, Miloš Paunović, Nicolas K., Piyush Bhaskar, Roman Acevedo, Rémi Barthe, ThurDas, Zhang ChuanJin, brian-mulier-p, github-actions[bot], nKwiatkowski, ssdalai, yuri1969