@everyone ** Launch Week #2 is coming. March 30 to April 3. ** 5 days. 5 major releases. From data management to AI sandboxes, from full code frontends to new deployment workflows. One feature a day, all week long!
Fratera · 2h ago
** Windmill v1.664+ — Many small feature improvements + Git Sync for solo builders** Trashbin — Accidentally deleted a script, flow, or app? It now goes to a trashbin where admins can restore it. No more "oops" moments. Git sync in Community Edition — Git sync is no longer EE-only. It's now available on CE for workspaces with up to 2 users — perfect for solo builders and trial setups to version-control their workspace from day one. Flow status viewer: groups & notes — The run page flow viewer now displays step groups and notes, making it much easier to follow the execution of complex flows. Sensitive log masking — Job logs now automatically redact sensitive values (passwords, tokens, secrets) so they don't leak in run outputs. Docker-in-Docker isolation — For our docker-compose users, we updated the template: Docker jobs now use a dind sidecar instead of mounting the host docker socket, for better security isolation out of the box. We also released other features that deserved their own changelog and will be posted here by their respective authors
rubenf · 2d ago
@everyone Windmill is the fastest workflow engine but many times the comparison with other workflow engines was stuck on low-code vs full code flows. I'm proud to release the ALPHA of: **Workflow-as-Code v2 — Write workflows as plain code** We completely rebuilt Workflow-as-Code from the ground up. Instead of a visual flow builder, you write your entire workflow as a regular TypeScript or Python script — with all the reliability of Windmill's execution engine behind it. ``` import { task, step, sleep, waitForApproval, workflow } from "windmill-client"; const process = task(async (x: string) => `processed: ${x}`); export const main = workflow(async (x: string) => { const a = await process(x); const urls = await step("get_urls", () => getResumeUrls()); await sleep(60); await waitForApproval({ timeout: 3600 }); return { processed: a }; }); ``` Each task() call runs as a separate checkpointed job — if your workflow fails halfway through, completed steps are skipped on retry. step() checkpoints inline code without spawning a child job. sleep() and waitForApproval() suspend server-side without holding a worker. What's new: - Direct function calls — no more string-based step references or passing context objects. Just wrap your functions with task() and call them normally - Module support — split your workflow across multiple files with taskScript("./helper.ts"), each module gets its own editor tab - Parallel execution — Promise.all() / asyncio.gather() just works - Full primitive set — task, taskScript, step, sleep, waitForApproval, getResumeUrls - Python & TypeScript — both languages supported with idiomatic APIs (@task() decorator in Python) - Live timeline — real-time visualization of step execution, durations, and status in the UI Available now in v1.652+. https://www.windmill.dev/docs/core_concepts/workflows_as_code
rubenf · 2w ago
Join the Discord to ask follow-up questions and connect with the community