Node
We have an alpha of a NodeJS compatibility mode (a true one, where NodeJS is the actual runtime). We are looking for enterprise beta testers to test it with your legacy NodeJS code.
NEW [Major] 🔴
NEW [Major] 🔴
Schedule App Reports
Send a PDF or PNG snapshot of any app at a given schedule to slack / discord / email or via any custom script....
Git sync
New feature: you can now sync your workspace with a Git repo. Any updated script, flow or app will be automatically pushed to the repo upon deploy! Only for EE. More details -> https://www.windmill.dev/docs/advanced/git_sync
We have added two new components to the
We have added two new components to the App builder:
Dropdown menu:
- Actions are fully customisable button components (color, label, icons,...)
- They can trigger a runnable on click and/or trigger a side effect (open a modal, select a tab, etc.)...
It is now possible to define a node at
It is now possible to define a node at which the flow will return at for sync endpoints. The rest of the flow will continue asynchronously.
Useful when some webhooks need to return extremely fast but not just the uuid (define first step as early stop) or when the expected return from the webhook doesn't need to the full flow being computed...
Competitors
@here Dedicated workers for full flows are now available in alpha for EE. Run each step of a flow on workers dedicated to the flows at blazing speed by just toggling a setting at the flow level and assigning your worker group to that flow. When a worker is assigned to a flow, it is capable of handling every steps. The full flow attached here made of 3 scripts (1 in python, 2 in typescript) and branches executed in 36ms of worker time and took 230ms end-to-end.
This make windmill flows good fit for event streaming cases.
We've benchmarked with @guillaume windmill to be the fastest workflow engine among airflow, prefect, temporal, and by quite a margin for airflow! Read more at: https://www.windmill.dev/docs/misc/benchmarks/competitors
Also next week will be launch week. If you're a keen reader of this channel, you already know almost everything we will present except one major feature on day 5. But we will make special efforts on how we present things by having blog posts explaining in details each feature....
Feat
We've added a tree viewer to the homepage, that includes expand/collapse functions and a clearer hierarchical layout.
Ask Inkeep
Please use and try our new AI bot @Ask Inkeep for any simple questions! It's the same AI agent used in our docs
INIT_SCRIPT
new env variable INIT_SCRIPT to run a script at the start of a worker. Combine it with the EE worker group management UI to modify them directly from the workers page. This is more lightweight than having a separate docker images per worker group and make it much easier to iterate
EE only search any scripts flows
EE only: search any scripts, flows, resources, apps for a specific string similar to github search.
There was a significant performance
There was a significant performance improvement for windmill_app for large results. We now avoid unecessary de/serialization which is both much faster and have a lighter memory footprint.
groups
Build your own meta components aka container groups
Here is one of the alpha of one of those features announced today, you can now transform containers into groups so that you can make them generic by having the inner components of it connect to the group fields. The next iteration will allow to save those groups in the workspace. Inside those "container groups", you can refer to "group.x" to refer to one of those group field which make this independent of the id of the container itself...
Eval V2 are here!
Eval V2 are here!
Apps go from already really fast to super blazing fast.. We now parse your eval and frontend scripts using the swc parser compiled to wasm to extract any references to outputs. It allows windmill to suggest dependencies for frontend scripts as shown in the video. More importantly, now evals are only evaluated on changes to the outputs that have been identified. It means that most likely a properly made windmill app could be as fast or faster than full code apps. Prior evals were recomputed for any change to any output. This scale really bad for complex apps and why we were careful about the usage of evals.
Evals will not be converted automatically so you will have to press the toggle to go from Legacy Eval to New Eval.
...
We ve enhanced the Runs page with an
We've enhanced the Runs page with an improved UI for filters and a more compact view.
We improved the Audit Logs page design
We improved the Audit Logs page design and we added more filters!
Table rows now have properties similar
Table rows now have properties similar to List but instead of using iter.index, iter.value, one uses row.index, and row.value. It allows to do things like the example above. There is also a new 'inputs' output that contains the inputs of every rows.
here Introducing Concurrency Limits
@here Introducing Concurrency Limits. Define them for scripts and flow's inline scripts and ensure that you never hit the API Limit of the targeted api. They work globally and across flow runs. You can define a time window so that it's not just instantaneous concurrency limits. No more hacking around with worker groups, do it in a few clicks!
Implementation by @buldau...
In the python script builder resource
In the python script builder, resource types are now added as TypedDict with autocompletion of properties!
Resource Types
Before:
...
import type Resource from https://...
export async function main(db: Resource<'postgresql'>)
import type Resource from https://...
export async function main(db: Resource<'postgresql'>)