Skip to main content

Changelog

See what's new with Windmill.

Watch latest Windmill weekly keynotes

Weekly keynotes are hosted on Discord and Youtube on Friday at 5:45 pm CET+1.

See the Windmill roadmap and what's coming next

Roadmap

21 posts tagged with "Script editor"

View All Tags

SQL scripts now support safe string interpolation for table and column names through backend schema validation, allowing more flexibility than prepared statements while preventing SQL injections.

New features

  • Safe string interpolation for SQL queries
  • Backend schema validation for interpolated arguments
  • Support for table and column name parameters

Select Python version for your script.

New features

  • Annotate Python version directly in scripts.
  • Set global Python version via environment variable.
  • Automatic version assignment to lockfile for new scripts.
  • Default to Python 3.11 for existing scripts without specified version.
  • Enterprise Edition support for S3 cache by Python version.

Deno 2.0

Script editorv1.407.0

Deno has been updated to 2.0.0 in Windmill.

New features

  • Deno 2.0 runtime

Email triggers

Script editorFlow editorv1.376.0

Scripts and flows can now be triggered by the delivery of an email.

New features

  • Enable scripts and flows to be triggered by incoming emails via SMTP.
  • Provide unique email addresses for script and flow triggers, which deliver email content in both raw and parsed formats to the user scripts.

We've made our runtime that we've called "REST" and "nativets" support npm packages and relative imports! There is now no difference in the syntax of TypeScript/Bun scripts and native scripts. Native scripts still only support a subset of what node supports (just the fetch operation) but many npm packages can still be used because that's all they use under the hood (for instance, windmill-client and axios).

How to activate? Just add //native to the head of your script. Windmill will automatically convert between 'nativets' and 'Bun' scripts based on the presence of this header so you can always just pick TypeScript (Bun) and decide at the end if you want to accelerate it with 'native' if possible.

We've also changed the default docker-compose/helm template to go from 4 small native workers with each 1 subworker to 1 bigger native worker with 8 subworkers as it performed better in our benchmarks. If you need more throughput, simply increase the replicas of the native workers, don't increase the number of subworkers past 8 as the interleaving will result in lower throughput.

This is a huge improvement as you can now make our native runtime an implementation details and we can unify everything under the standard "TypeScript" language without anything Windmill-specific. Legacy native/fetch scripts will still work but the new REST button now simply prefill a Bun script with a //native header.

Native runtime is great for scripts that are doing simple fetch and require little compute but are io-bound on the response from the API. You can get parallelization of 8 requests/scripts at a time with a single worker, resulting in 8x better throughput between Bun and native scripts at scale.

New features

  • Support for npm packages and relative imports in `REST` and `nativets` runtimes.
  • Unified syntax between TypeScript/Bun scripts and native scripts.
  • Automatic conversion between `nativets` and `Bun` scripts based on `//native` header.
  • Improved scaling strategy with a single bigger native worker managing more subworkers.
  • Legacy scripts compatibility while promoting new REST standard with pre-filled Bun script templates.
  • Parallelization capabilities allowing 8 simultaneous fetch operations.

Windmill now pre-bundles TypeScript (Bun) scripts using Bun bundler and caches them on S3 and locally at deployment time. Furthermore, if a Bun script is run while not being pre-bundled, it will be re-bundled. This will increase stability and optimize (in some cases with 60% improvement) the execution time and the memory consumption, in particular for scripts with many/heavy imports and relative imports.

We also did improvements for non-deployed scripts using better caching strategies for the dependency cache. You cannot do any faster than running a pre-bundled script aside from having the script being already running which is what dedicated workers are made for. This makes Windmill the fastest platform to run TypeScript.

However, in very rare cases (< 1%), this might break existing bun scripts that are incompatible with being bundled. If you notice such issue for a particular script after the upgrade, add //nobundling to the top of the script.

New features

  • TypeScript Bun scripts are automatically pre-bundled.
  • Cold start improvement.
  • Memory usage improvement.

Dynamic select is an helper function within scripts that allows you to create a select field with dynamic options.

New features

  • Create dynamic select fields within scripts.
  • Options within the select field can dynamically change based on input arguments.
  • Support for TypeScript and Python.
  • Conditional logic within the function to filer and sort select options based on specified conditions.

Flow versioning

Flow editorScript editorApp editorv1.357.0

Flows now have versions just like scripts and apps.

New features

  • Versions for flows.
  • Redeploy Scripts, Flows, Apps from past version.
  • Fork Scripts, Flows, Apps from past version.
  • Deployment message for Scripts and Flows.

OneOf inputs

Script editorFlow editorv1.347.0

Added new type of input `oneOf@, that displays an option between multiple objects.

New features

  • OneOf support in TypeScript scripts and their auto-generated UIs.
  • OneOf support in flow inputs and their auto-generated UIs.
  • OneOf support in any UI-built schema

Windmill now automatically tracks relative imports in Bun and Python such that if you update a common dependency and update its imports, it will now re-trigger deployment and lockfile computation of all the scripts that depend on it (it was working for Python but not Bun before).

Windmill can now also track such imports in inline scripts of flows and will surgically update the inline lockfiles of those flows if the relative imports change.

New features

  • Automatic re-trigger of deployment and lockfile computation of all the scripts that depend on Bun script.
  • When doing `wmill sync pull`, the wmill-lock.yaml will now automatically be updated, avoiding re-triggering lockfile computation for all files, only the ones that have changed from last sync.
  • Flows inline lockfile can now be updated locally using `wmill flow generate-locks`, which is the equivalent of `wmill script generate-metadata --lock-only` but for flows` inline scripts.

PHP support

Script editorv1.330.0

PHP is now supported as a primary language along TypeScript, Python, Go, Bash, or SQL languages.

New features

  • PHP support.

Concurrency limit observability

Concurrency limitsScript editorFlow editorv1.331.0

Obversability around concurrent jobs has been improved from the Runs menu.

New features

  • Filter jobs by their Concurrency Key.
  • Graphical view can be set to Concurrency (instead of Duration by default), allowing to see the number of concurrent jobs at a given time.

Rest scripts are in fact TypeScript fetches. They support all the normal signatures of normal TypeScript but only stdlib JavaScript and the fetch operations. Imports are not allowed. But now the full wmill API is supported.

New features

  • wmill API is now supported by nativets/REST scripts with `import * as wmill from "./windmill.ts"`

Jobs labels

RunsScript editorFlow editorv1.316.0

Labels allow to add static or dynamic tags to jobs with property "wm_labels" followed by an array of strings (e.g. return {"wm_labels":["showcase_labels", "another_label"]}

New features

  • Runs are tagged with labels.
  • For scripts and flows.
  • Labels can be filtered from Runs menu.
  • Jobs support multiple labels.
  • In Runs menu, click on a Label to filter by it.

Map support in Rich display rendering.

New features

  • Display a map from lat and long.
  • Marker with specific location and colors.
  • Example: `return { "map": { lat: 40, lon: 0, zoom: 3, markers: [{lat: 50.6, lon: 3.1, title: "Home", radius: 5, color: "yellow", strokeWidth: 3, strokeColor: "Black"}]}`

Markdown support in descriptions

Script editorFlow editorResourcesv1.298.0

We now support GH flavored markdown for description of scripts, flows, resources.

New features

  • Markdown support for scripts descriptions.
  • Markdown support for flows descriptions.
  • Markdown support for resources descriptions.

Windmill supports many languages, but organizations usually only use a few, now you can configure the languages that are visible and their order.

New features

  • Applies to scripts, flows and apps.
  • Global to all users within a workspace.
  • Only configurable by admins.

Workflows as code

Script editorFlow editorv1.284.0

Flows are not the only way to write distributed programs that execute distinct jobs. Another approach is to write a program that defines the jobs and their dependencies, and then execute that program. This is known as workflows as code.

New features

  • Define workflows as code in a single script intuitive and lightweight syntax.
  • Support for Python.
  • Support for TypeScript.

Pin database resource path directly within a SQL script instead of filling it through the UI.

New features

  • Use "-- database resource_path" in your script.
  • Works with PostgreSQL, MySQL, BigQuery, Snowflake, MS SQL, GraphQL.

Flow & metadata copilot

Windmill AIFlow editorScript editorv1.270.0

The Flow & metadata copilot is an assistant powered by an OpenAI resource that simplifies your script & flows building experience by population fields (summaries, descriptions, step input expressions) automatically based on context and prompts.

New features

  • Fills summary of script & flow steps.
  • Links flow step inputs to previous steps results.
  • Fills flow loops iterator expressions from context.
  • Completes branches predicate expressions from prompts.
  • Defines CRON schedules from prompts.

Rich results render

Script editorFlow editorv1.251.1

Added rich results render for arrays of objects and markdown in scripts and flows.

New features

  • Support for arrays of objects.
  • Download as CSV and JSON.
  • Pagination.
  • Hide/show columns.
  • Search and filter.
  • Support for markdown.