Skip to main content

Changelog

See what's new with Windmill.

6/10/2024 |

Docs

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.

6/4/2024 |

Docs

We have released our new Windmill Billing Portal https://portal.windmill.dev/.

You can access your Portal from your Instance Settings, in the "Core" tab. Or by visiting https://portal.windmill.dev/, entering your email and then accessing the link sent via email. Update contact information, billing details and subscription (seats & vCPUs) from the portal. From there, you can also enable/disable any time automatic renewal and automatic debit (therefore payment by invoice).

In the Usage section, you can find the Seats of vCPUs usage of your Prod instance, and check whether your use of Windmill corresponds to your subscription. There is a ‘Report an error’ button, please use it if reported usage is incorrect.

It's also an opportunity for us to explain our new way of managing license keys for self-hosted instances.

As you know, when you subscribe to Windmill, you receive a license key to enter in the instance settings. Now, this key automatically updates every day as long as the subscription is valid. A key is valid for 35 days and expires as soon as an updated key replaces it. This system relieves you from having to worry about your key expiring. Now everything is automatic as long as your subscription is valid. You can still contact us for exceptions.

New Features

  • Windmill Billing Portal available at https://portal.windmill.dev/
  • See info on subscription and usage.
  • Update contact info from your portal.
  • Update subscription and billing details.
  • Automatic license key renewal.

5/27/2024 |

Docs

Apps are executed on behalf of publishers and by default cannot access viewer's resources.

If the resource passed here as a reference does not come from a static Resource Select component (which will be whitelisted by the auto-generated policy), you need to toggle "Resources from users allowed".

The toggle "Static resource select only / Resources from users allowed" can be found for each runnable input when the source is an eval.

New Features

  • By default, dynamic resource input from app runnables can only be filled from components Resource Picker.
  • With a toggle on each dynamic resource input, you can allow to pass resources from user or scripts & flows outputs.

5/27/2024 |

Docs

Windmill AI has been upgrading from GPT 4 and GPT-3.5-turbo to GPT-4o

New Features

  • Faster execution.
  • You do not need to change your existing OpenAI resource.

5/27/2024 |

Docs

Apps are executed on behalf of publishers and by default cannot access viewer's resources.

If the resource passed here as a reference does not come from a static Resource Select component (which will be whitelisted by the auto-generated policy), you need to toggle "Resources from users allowed".

The toggle "Static resource select only / Resources from users allowed" can be found for each runnable input when the source is an eval.

New Features

  • By default, dynamic resource input from app runnables can only be filled from components Resource Picker.
  • With a toggle on each dynamic resource input, you can allow to pass resources from user or scripts & flows outputs.

Concurrency Limit Observability

Concurrency limitsScriptsFlow Editorv1.331.0

5/15/2024 |

Docs

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.

5/15/2024 |

Docs

When set to full height, a component (in its respective view type, desktop or mobile) components will have their height go down until the end of the parent container (if no, canvas).

New Features

  • Full Height, Desktop mode
  • Full Height, Mobile mode

5/15/2024 |

Docs

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

New Features

  • PHP support.

5/13/2024 |

Docs

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"`

5/10/2024 |

Docs

You can visualize metrics for Delayed jobs per tag and Queue delay per tag.

New Features

  • Metrics for Delayed jobs per tag
  • Metrics for Queue delay per tag

4/28/2024 |

Docs

Latest CLI and Git Sync have 2 major improvements:

1. Wherever there is a lockfile (in scripts, flows and apps), the lockfile is now stored in a separate file (<same_path_as_script_or_inline_script>.lock) and referenced in the yaml by !inline <path of lock>. We had numerous feedback from EE customers that the lockfile were hard to diff and added lots of boilerplate to otherwise clean yaml files.

2. Script in apps (even frontend scripts) are now stored in separate files, similar to what is the case for flows. Which mean now apps are their own folders:myapp.yaml -> myapp.app/app.yaml + myapp.app/inline_script1.ts + myapp.app/inline_script1.lock + ...

This will improve greatly the ability to use commits/PR to review scripts, flows and apps changes.

To do a clean update:
- Upgrade Deno.
- Upgrade wmill CLI to latest.
- Do a wmill sync pull and push to your repo.
-update the CLI used to 1.320.3 in your GitHub actions.
- Update your git sync script (we've made that easier, just click button and save git settings).

New Features

  • Scripts pulled locally come with a .lock file (separated from metadata file).
  • Script in apps are now stored in separate files.

4/24/2024 |

Docs

The AgGrid Infinite Table component allows you to display an Ag Grid table with infinite scrolling.

New Features

  • Specific syntax to let component manage rows display.
  • Search function.

Jobs Labels

RunsScriptsFlow Editorv1.316.0

4/24/2024 |

Docs

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.

4/12/2024 |

Docs

AgGrid and Database Studio rows now support actions, components that will be displayed at each row of the table.

New Features

  • Support the following components:
  • Button
  • Toggle
  • Select

4/2/2024 |

Docs

When enabled, the flow will continue to the next step after going through all the retries (if any) even if this step fails.

New Features

  • The flow will continue to the next step after going through all the retries (if any) even if this step fails.
  • This enables to process the error in a branch one for instance.
  • By default, each step is set to "Stop on error and propagate error up".

4/2/2024 |

Docs

While loops execute a sequence of code indefinitely until the user cancels or a step set to Early Stop stops.

New Features

  • The loop will continue to run until canceled, either manually or with an Early Stop for step or loop.
  • Skip failure mode.
  • Test and iteration.

3/27/2024 |

Docs

Improved the experience with approval steps.

New Features

  • You can now remove the deny button from approval page to force more complex patterns using forms with enums processed in ulterior steps.
  • Now approval steps resume forms at any level will be displayed at the top-level, regardless of their depths.
  • We have updated the default template and there is a new field description to add very clear instructions which support the whole range of of rich display rendering.

3/27/2024 |

Docs

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

ScriptsFlow EditorResourcesv1.298.0

3/27/2024 |

Docs

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.

3/26/2024 |

Docs

You can set and retrieve a value given a key from any step of flow and it will be available from within the flow globally.

New Features

  • Set custom flow states from any step.
  • Retrieve custom flow states from any step.
  • Supported in TypeScript and Python.

3/23/2024 |

Docs

From Variables tab, admins can create custom contextual variables that will act as env variables for all jobs within a workspace.

New Features

  • Create custom contextual variables that will act as env variables for all jobs within a workspace.
  • For admins only.
  • We still recommend using user-defined variables but in some cases (e.g. your imports depend on env variables), this might be a good escape hatch.

3/23/2024 |

Docs

One of our large scale customers noticed that their database disk usage was much much higher than they anticipated. After investigation, we realized that our use of the database for streaming was very suboptimal in a few ways due to the nature of update in postgres. When you update a row in Postgres, it will actually keep the prior row as a dead tuple until it is collected. It doesn't matter in much case but it will if you're appending a few log lines to a 25MB log row, every 500ms.

We have completely refactored the way we deal with logs in major ways and starting on 1.295.0 you should feel comfortable having extremely large logs on Windmill

First action we took was to extract the logs from the queue table to a separate table. That was to avoid update unrelated to logs creating dead tuples. Second action was to make the streaming rate from the worker adaptive to the the duration of the job, a longer job does not need to update its log every 500ms, every 2.5s is reasonable for jobs of more than 10s, 5s for 60s+, etc...

But that was still not enough, even every 2.5s an update on a 25mb log would create lots of heavy dead tuples. And 25MB is not that large, our customer should feel confident streaming GBs of logs per job with jobs that run for months.

So we completely revisited the way we store logs to only treat the database as a buffer for streaming purpose rather than long term storage. We keep the db as a 5000 char buffer to still provide the same instant preview as before but

1. On EE, the logs will be streamed to S3 if you connected your instance to S3, everything is seamless and you can still download the entire log, Windmill will take care of streaming from S3

2. non EE, the excess log (>10000 chars) will be stored on disk of the worker (mount /tmp/windmill/logs to persist those).

Now the db only stores at most 5Kb of logs per job rows, reducing the pressure on it by order of magnitudes, while users can now run jobs with unlimited logs with minimal impact on the worker or db. And the logs are still as live as before

New Features

  • Logs moved to a separate table to reduce database clutter.
  • Adaptive log update frequency based on job duration to lessen database load.
  • Database used as a buffer for instant log previews, storing up to 5000 characters.
  • S3 streaming for EE users and local storage for non-EE users for extensive logs.
  • Significantly reduced database pressure, supporting unlimited log sizes with minimal impact.

3/22/2024 |

Docs

On self-hosted instances, workspaces can have names and IDs updated from the workspace settings.

New Features

  • Change name and/or ID of each workspace.
  • For admins only.

3/13/2024 |

Docs

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

ScriptsFlow Editorv1.284.0

3/4/2024 |

Docs

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.

2/27/2024 |

Docs

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.

2/15/2024 |

Docs

All secrets of a workspace are encrypted with a symmetric key unique to that workspace. This key is generated when the workspace is created and is stored in the database in the workspace_settings. You can now manually update the encryption key of a workspace, it will be re-encrypted with the new key and the previous key will be replaced by the new one.

New Features

  • Manually update the encryption key of a workspace.

Flow & Metadata Copilot

Windmill AIFlow EditorScriptsv1.270.0

2/15/2024 |

Docs

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.

1/24/2024 |

Docs

If configured, users who are operators in this workspace will be redirected to this app automatically when logging into this workspace.

New Features

  • Set an app to pop up when an operator logs into the workspace.
  • Make sure the default app is shared with all the operators of this workspace before turning this feature on.

Rich results render

ScriptsFlow Editorv1.251.1

1/23/2024 |

Docs

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.

Database Studio

App EditorPostgresv1.251.1

1/23/2024 |

Docs

Introducing the Database Studio, a web-based database management tool that leverages Ag Grid for table display and interaction. In apps, interaction with database content made easy; from a SQL resource, display, edit, add rows, delete rows ... and connect to other components.

New Features

  • Display the content of a table.
  • Edit the content of a table by directly editing the cells (only when the cell is editable).
  • Add a new row.
  • Delete a row.
  • Support of Postgresql, MySql, MS Sql, BigQuery, Snowflake.

1/15/2024 |

Docs

Windmill provides a true NodeJS compatibility mode using Bun. This means that you can run your existing NodeJS code without any modifications. Only comment //nodejs on the first line of your Bun script.

New Features

  • Node.js support without any code modification.

Ag Charts

App EditorPostgresv1.239.0

1/11/2024 |

Docs

The Ag Charts component integrates the Ag Charts library, enabling the visualization of data through various chart types. This component is designed to offer a flexible and powerful way to display data graphically within the application.

New Features

  • Chart Display: Leverages the Ag Charts library to present data in a visually appealing chart format.
  • Diverse Chart Types: Supports multiple chart types including Bar, Line, Scatter, and both Area & Range Bar that are exclusive to Enterprise Edition (because Ag Charts key needed).

Decision Tree

App EditorComponentv1.227.0

12/17/2023 |

Docs

This app component allows you to create a decision tree controlled by a flow-like structure. Each node in the tree represents a decision point with a dedicated subgrid and can lead to one or more subsequent nodes based on specified conditions.

New Features

  • Each node has its dedicated container
  • Condition behavior with branches
  • Debug mode
  • setTab to override flow-like structure