v2.0.1

Minor
Published on September 11, 2026

Changelog

🚀 Features

ai

  • a3ab8b5 surface the AI Copilot with a button in the top bar (#19393), closes #19393

core

  • 6c75b62 report translation keys that render as their raw id at runtime (#19037), closes #19037 #19041

📘 Subtasks

version

  • 137e9ec update to version '2.0.1'

🐛 Bug Fixes

ai

  • 249e0e5 grow the copilot composer around a prompt that is already in it when it opens (#19389), closes #19389

core

  • 6d9d42c FlowServiceTest compilation
  • ff84cd1 reject invalid BOOL input values
  • d953f86 mask secrets in log-to-file exception traces
  • d02c78f renew a stale CSRF cookie token instead of failing the initial setup with 403 access denied (#18965), closes #18965
  • c22fda1 drop the definitions of input types excluded from a schema (#19142) (#19231), closes #19142 #19231
  • 91d7f71 stop LoopUntil after maxIterations instead of maxIterations + 1 (#19209), closes #19209
  • f6fcb48 private cache-control on tenant-scoped execution downloads
  • 9318eae Content-Disposition filename injection on export endpoints
  • d51059f translate the remaining hardcoded strings (#19129), closes #19129
  • b5a85e9 fix grammar issues in english UI text (#19127), closes #19127
  • 11642d6 translate the hindi kill message instead of leaving it in english (#19126), closes #19126
  • fcf92cf use the global translator in the logs pager and plugin card templates (#19048), closes #19048 #19049
  • 283b86b the browser back button no longer skips the page you came from (#19124), closes #18994 #19124
  • 74f5800 stop the generator upper-casing state words and mangling casing in non-latin locales (#19036), closes #19036 #19046
  • 121f3e9 translate sentence-initial nouns instead of keeping them in english (#19035), closes #19035 #19044
  • 21616ff make the translation generator reroll and refuse english copies (#19032), closes #19032 #19040
  • 4d303ea let the english-copy rule accept kestra entity nouns and product names (2.0 backport) (#19118), closes #19118
  • 7561119 inspect getDeadline() in DAILY_TIME_WINDOW branch of TimeWindowValidator, closes #18763
  • 303c025 reject restart of a PAUSED execution
  • e85c9f2 match HTTP allow/deny lists on the URI authority and re-check redirects

dashboards

  • 05d026e drill-down page filters, clicked time bucket, drawer reload (#18988) (#19205), closes #18988 #19205

design-system

  • 85d3369 align the "last 30 days" filter value with the app's PT720H (#19141) (#19232), closes #19141 #19232
  • 3c837f8 drop the trailing comma that makes the manifest unparseable (#19315), closes #19257 #19315
  • c484cbf apply-to option highlight in the interval filter (#19086), closes #19086

executions

  • bc3a6b3 reject executing a soft-deleted flow by explicit revision
  • 76fe90a unify webhook 404 so flow existence isn't leaked
  • 9398b12 api action downloads the execution json as a link (#18902), closes #18902
  • bb7349e show the task run state-change hints again (#19038), closes #19038 #19045

executor

  • 6008c2e do not resume a Pause twice when its pauseDuration expires after a manual resume (#18597), closes #18507 #18597

flows

  • a572fc1 clear the draft flag when deleting a flow's draft head
  • fc2225f breadcrumb navigation from execution to flow edit no longer blanks the page (#18997) (#19111), closes #18997 #19111

plugins

  • 1f04106 pebble docs table renders its own text as HTML (#19323), closes #19323

scheduler

  • d0476c1 publish vNode assignments as immutable snapshots
  • bb88cbf stop() lost on a scheduling loop still queued for start
  • 2f3200c spurious thread-starvation warning on fresh start
  • 744b28b compile the unparseable-flow trigger test against the 2.0.x store API, closes #19137
  • 8a2162a an unparseable flow no longer stalls its scheduling loop or floods the logs (#19137), closes #19137

tests

  • ecfe04e DefaultSchedulerTest liveness-manager stalls and vacuous assertions

triggers

  • 663d093 timezone picker for the Schedule trigger in the no-code form (#18963), closes #18381 #18963

global

  • c1f4190 prevent NPE when Switch task has only defaults and no cases, closes #18357
  • 1f6d142 use schedule timezone for cron validation
  • 20fd0fe reject unsatisfiable schedule cron expressions

🏭 Tests

core

  • 715011d cover the translation key usage rules (#19034), closes #19034 #19043

🔄️ Changes

core

  • 495cfda delete the components and utils nothing imports (2.0 backport) (#19264), closes #19218 #19264

iam

  • 331c2f4 centralize repository namespace ACL into one policy bean (#19145), closes #19145
  • 92fe374 name no-ACL repository reads *WithoutAcl and split findLatestForStates (#18944), closes #18944

🛠 Build

core

  • 586c613 keep the release branches translated with the auto-translate bot (#19203), closes #19201 #19203
  • 94966a0 generate the translations of a pull request from a fork on demand (#19192), closes #19185 #19192
  • 98cccf5 tell the enterprise repository when a push changes the translation keys (#19191), closes #19184 #19191
  • 27d4d61 declare the node version the translation scripts need (#19190), closes #19186 #19190
  • 5508835 make translations:check run the PR gate before the comparer (#19136), closes #19131 #19136
  • c571150 run the translation gate on every push to develop and the release branches (#19135), closes #19130 #19135
  • 3f33e2d check the namespace of runtime-built translation keys in the gate (#19033), closes #19033 #19042
  • c67de14 fail the translation gate on stale fingerprints in the locale files (#19031), closes #19031 #19039

deps

  • 11dfc77 translations check no longer downloads tsx (#19094), closes #19094

tests

  • 6887c66 one script naming convention across the frontend packages (2.0 backport) (#19257), closes #19257

📝 Documentation

core

  • 637b634 reword the 'An unexpected error occurred' UI error in EE edition

tests

  • fece264 describe the translation gate on pushes, the OSS to EE dispatch and the fork workflow (#19197), closes #19195 #19197
  • dee9de2 correct 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