Commit Graph

11710 Commits

Author SHA1 Message Date
centdix 6bb48bfb31 docs: add nuanced mutex selection guidance to Rust backend skill (#7737)
Add "Mutex Selection in Async Code" section explaining when to use
std::sync::Mutex vs tokio::sync::Mutex based on official Tokio docs.
std::sync::Mutex is preferred for data protection as it's faster;
tokio::sync::Mutex only needed when holding locks across .await points.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 15:08:41 +00:00
centdix 90889f2cad internal: add Rust backend coding skill and consolidate guidelines (#7731)
* feat: add Rust backend coding skill and consolidate guidelines

Create a dedicated skill at .claude/skills/rust-backend/SKILL.md that
provides comprehensive Rust coding guidelines adapted to Windmill patterns:
- Iterator chains, error handling, early returns, variable shadowing
- JSON handling with Box<RawValue>, Serde optimizations
- SQLx patterns (no SELECT *, batch operations, avoid N+1)
- Async/Tokio patterns (spawn_blocking, bounded channels)

Consolidate project context into backend/CLAUDE.md and remove the
redundant rust-best-practices.mdc file.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* add command plugins

* nit

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 12:02:27 +00:00
centdix 821fd86ef2 hide cred check (#7736) 2026-01-29 12:01:29 +00:00
wendrul 4b1254fe84 fix: do not quit indexer when receiving handoff during pull (#7659)
* fix: do not quit indexer when receiving handoff during pull

* update

* Add correct return type

* update ee-repo-ref [CI only]

* chore: update ee-repo-ref to c05572e93739e2697ab310d87efe2744cd0e1aaf

This commit updates the EE repository reference after PR #394 was merged in windmill-ee-private.

Previous ee-repo-ref: 4358aa9c5b3b38ba74d7ea52cafd49899d338a07

New ee-repo-ref: c05572e93739e2697ab310d87efe2744cd0e1aaf

Automated by sync-ee-ref workflow.

---------

Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2026-01-29 11:43:26 +00:00
centdix a30ea630e5 chore: handle empty strings in AI resource fields via serde deserializer (#7723)
* fix: handle empty strings in AI resource fields via serde deserializer

Add `empty_string_as_none` deserializer that converts empty strings to None
during deserialization. Applied to base_url, api_key, region, and AWS
credential fields in AIStandardResource and ProviderResource.

This fixes the "relative URL without a base" error when creating Anthropic
resources with empty base_url fields.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* nit

* nit

* nit

* cleaning

* cleaning

* cleaning

* cleaning

* fix: apply empty_string_as_none deserializer to api_key field

Consistent with other fields in ProviderResource, empty strings are now
deserialized as None for the api_key field.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:43:02 +00:00
centdix c84d325d65 Allow wmill app dev to accept folder argument (#7718)
Enable running the dev command from any directory by specifying the
target .raw_app folder as an argument. Workspace resolution and
authentication still happen from the original cwd to find wmill.yaml.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 11:42:51 +00:00
Ruben Fiszel e773c42aa7 chore(main): release 1.621.1 (#7733)
* chore(main): release 1.621.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2026-01-29 09:25:42 +00:00
Ruben Fiszel de9b089643 fix: add 32MB memory limit to QuickJS runtime for flow expressions
QuickJS was missing an explicit memory limit, unlike deno_core which has
a 128MB heap limit. This adds a 32MB limit appropriate for lightweight
flow expression evaluation.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 09:17:10 +00:00
Ruben Fiszel 67206f4b75 cli test nits 2026-01-29 08:44:16 +00:00
Ruben Fiszel 74b346eafe chore(main): release 1.621.0 (#7732)
* chore(main): release 1.621.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2026-01-29 08:38:31 +00:00
Ruben Fiszel b334d42f95 nit cli tests 2026-01-29 08:38:07 +00:00
Ruben Fiszel aa84202ce7 fix: return null for non-existent step access in flow expressions
Previously, accessing a non-existent step via results.nonexistent would
throw an error. This fix makes both Deno Core and QuickJS return null
instead, enabling patterns like:

- results.nonexistent ?? 'default'
- results.nonexistent?.value ?? 'default'

The fix was applied to:
- js_eval.rs: handle_full_regex fast-path now uses .ok().flatten()
- js_eval_quickjs.rs: fallback path now uses .ok().unwrap_or(null)

Added flow engine test to verify the behavior.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 07:48:46 +00:00
Ruben Fiszel 0706ace608 feat: add QuickJS as alternative JS engine for flow expression evaluation (#7664)
* feat: add QuickJS as alternative JS engine for flow expression evaluation

Add rquickjs as an optional alternative to deno_core for evaluating
JavaScript expressions in flow transformations. QuickJS offers ~8-16x
faster startup times for simple expressions, making it ideal for
evaluating many small expressions in flows.

Key changes:
- Add new `quickjs` feature flag for windmill-worker
- Implement js_eval_quickjs.rs with true async Rust callbacks for
  variable(), resource(), and results.xxx access (no pre-fetching)
- Share expression transformation logic (replace_with_await,
  replace_with_await_result) between both implementations
- Add USE_QUICKJS_FOR_FLOW_EVAL env var to switch engines at runtime
- When only quickjs feature is enabled (no deno_core), QuickJS is
  automatically used
- Add comprehensive parity tests comparing QuickJS and deno_core output

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* all

* quickjs

* quickjs

* all

* all

* all

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-29 01:44:40 +00:00
Ruben Fiszel 6a3a45396d chore(main): release 1.620.1 (#7730)
* chore(main): release 1.620.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2026-01-28 22:58:56 +00:00
Ruben Fiszel 9f235f0869 fix: codebase preview in standalone mode
- Fix standalone bundle path lookup in worker to not add redundant file
  extension (the path already contains .tar/.esm suffixes from the API)
- Fix CLI preview tar bundle handling to preserve binary data correctly
  (was using btoa(blob.text()) which corrupted binary tar data)
- Add integration tests for script/flow preview commands covering:
  - Regular scripts (non-codebase)
  - Codebase scripts (CJS and ESM formats)
  - Codebase scripts with assets (tar bundles)
  - Flow preview

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 22:54:38 +00:00
Ruben Fiszel 37c465895d chore(main): release 1.620.0 (#7728)
* chore(main): release 1.620.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2026-01-28 20:00:23 +00:00
Ruben Fiszel 985ec901fe feat(cli): add script preview and flow preview commands (#7729)
- Add `wmill script preview <path> [--data <json>]` command to test scripts against remote workspace without deploying
- Add `wmill flow preview <path> [--data <json>]` command to test flows against remote workspace without deploying
- Support codebase scripts with automatic bundling via esbuild
- Add `--silent` flag to suppress logs and only output final result
- Fix `findCodebase` to properly check if path is within codebase relative_path before pattern matching

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 19:52:43 +00:00
Ruben Fiszel 42dc90ec09 fix: cache git branch detection to avoid repeated execSync calls
Previously, getCurrentGitBranch() was called inside loops for every
file processed during sync pull/push operations. For workspaces with
1900+ files, this spawned thousands of git subprocesses, causing a ~2x
performance regression.

This fix caches the git branch at the start of:
- elementsToMap() for pull operations
- push() for push operations

Expected improvement: ~3.2s -> ~1.6s for large workspaces.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 19:09:03 +00:00
Ruben Fiszel 672ed23ff9 chore(main): release 1.619.0 (#7722)
* chore(main): release 1.619.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2026-01-28 18:26:08 +00:00
Pyra a844308690 fix: nativets http tracing (#7716)
* fix: nativets http tracing

Signed-off-by: pyranota <pyra@duck.com>

* ee repo

Signed-off-by: pyranota <pyra@duck.com>

* nit

Signed-off-by: pyranota <pyra@duck.com>

* ee ref

Signed-off-by: pyranota <pyra@duck.com>

* ee repo

Signed-off-by: pyranota <pyra@duck.com>

* ee repo

Signed-off-by: pyranota <pyra@duck.com>

* fix

Signed-off-by: pyranota <pyra@duck.com>

* fix

Signed-off-by: pyranota <pyra@duck.com>

* fix v2

Signed-off-by: pyranota <pyra@duck.com>

* ee repo

Signed-off-by: pyranota <pyra@duck.com>

* chore: update ee-repo-ref to 5d841b358dd32130c9f34b54f59b96b5c322f213

This commit updates the EE repository reference after PR #396 was merged in windmill-ee-private.

Previous ee-repo-ref: 250723c698fceccbc66ae9a6c6c7c09e33465819

New ee-repo-ref: 5d841b358dd32130c9f34b54f59b96b5c322f213

Automated by sync-ee-ref workflow.

---------

Signed-off-by: pyranota <pyra@duck.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2026-01-28 18:19:19 +00:00
hugocasa 5459d2e875 fix(backend): leave job and audit history and archive workspace when changing workspace id (#7724) 2026-01-28 18:18:54 +00:00
wendrul 26dc4db842 fix: Raw apps deployment UI (and merge UI) (#7725) 2026-01-28 18:18:39 +00:00
centdix d4016f8d9d fix: make api key optional (#7726) 2026-01-28 18:18:24 +00:00
Ruben Fiszel 1149094cdc fix(cli): handle symlinks in isMain() for Node.js
The dnt polyfill's import-meta-ponyfill doesn't resolve symlinks when
comparing process.argv[1] with import.meta.url. When npm creates a
symlink for the `wmill` bin (e.g., /usr/bin/wmill -> .../main.js),
the paths don't match and isMain() incorrectly returns false, causing
the CLI to silently exit without running.

This fix resolves symlinks using fs.realpathSync() before comparison,
ensuring the CLI works correctly when invoked via npm-installed symlinks.

Tested with Node.js 20 and 25.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 18:16:17 +00:00
Ruben Fiszel b1868779a9 feat: enable tree-shaking for windmill-client
- Remove service re-exports from client.ts
- Build default export explicitly in index.ts
- Use unbundled ESM output
- Add sideEffects: false

Results: ~900 bytes vs 91KB for simple imports

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 18:02:14 +00:00
Ruben Fiszel 682e729f4c fix: use tsc for clean .d.ts files instead of tsdown bundled types
tsdown's bundled .d.ts output uses namespace declarations that reference
forward-declared types, which breaks Monaco/ATA type acquisition.

Switch to:
- tsdown for JS bundles (ESM + CJS) with --no-dts
- tsc with emitDeclarationOnly for clean individual .d.ts files

This restores the type structure from 1.617.0 which worked correctly
with Monaco editor's automatic type acquisition.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 16:22:16 +00:00
Ruben Fiszel eef945c700 fix: fix TypeScript default export for Monaco/ATA compatibility
tsdown generates "export { X as default }" which doesn't work properly
with Monaco's TypeScript type acquisition. This post-processes the .d.ts
files to use "export default X" instead.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 15:58:19 +00:00
Ruben Fiszel 1914a8bc4d chore(main): release 1.618.2 (#7721)
* chore(main): release 1.618.2

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2026-01-28 15:29:57 +00:00
Ruben Fiszel 64cfcdf565 fix: add default export to typescript-client for ESM compatibility
Enables `import wmill from "windmill-client"` syntax which was previously
broken due to missing default export in the generated ESM bundle.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 15:23:42 +00:00
Ruben Fiszel 62688708cb chore(main): release 1.618.1 (#7720) 2026-01-28 15:13:55 +00:00
centdix 34aeca61ad fix: handle empty base_url and region strings in AI providers (#7719)
When creating an Anthropic resource with "standard platform", the resource
JSON may contain `"base_url": ""` rather than omitting the field. Serde
deserializes this as `Some("")`, which bypassed the fallback logic and
caused "relative URL without a base" errors.

Similarly, AWS Bedrock with an empty region string would produce an
invalid URL like `https://bedrock-runtime..amazonaws.com`.

Filter out empty strings when checking for custom base_url and region
values, allowing the default URLs to be used correctly.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 15:08:30 +00:00
Diego Imbert 7a31c42d80 Fix DB Manager refresh button (#7717) 2026-01-28 13:56:35 +00:00
Ruben Fiszel 35c34e83f4 chore(main): release 1.618.0 (#7714)
* chore(main): release 1.618.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2026-01-28 12:41:54 +00:00
Diego Imbert 160d9c931e Fix superadmins frontend issue (#7712)
* Fix superadmins bug

* simpler
2026-01-28 12:35:00 +00:00
Mark Lai f2c2ab0c43 feat: typescript client esm build (#7709)
* feat: typescript client esm build

* fix: add --dts flag and restore tsconfig options for typescript client ESM build

- Add --dts flag to tsdown commands to generate declaration files
- Restore outDir in tsconfig.json for compatibility
- Restore forceConsistentCasingInFileNames for case-sensitive systems
- Update README_DEV.md to reflect new tsdown build process

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 11:30:57 +00:00
Guilhem c11ed1d1f3 fix: fix flow viewer height (#7715) 2026-01-28 11:20:17 +00:00
Diego Imbert f4a26d266a fix: fix annoying abort toasts (#7713)
* cancelableResource

* Fix cancelled toasts

* Revert "cancelableResource"

This reverts commit 9cf6df488f.
2026-01-28 11:08:09 +00:00
Ruben Fiszel 5d0beb5f2b chore(main): release 1.617.3 (#7707)
* chore(main): release 1.617.3

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2026-01-27 18:28:41 +00:00
centdix b891a22e98 fix(backend): include empty schemas in list_datatable_schemas endpoint (#7708)
The endpoint now returns all non-system schemas, including empty ones
without tables. This is useful for CLI and frontend features that need
to know about available schemas for autocompletion and app creation.

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 18:14:26 +00:00
Ruben Fiszel d4eeb50787 fix: do not delete tokens on being promoted to superadmins 2026-01-27 18:13:48 +00:00
centdix bff7053362 fix(cli): make wmill app lint and wmill app generate-agents respect nonDottedPaths setting (#7706)
These commands were using folder suffix checks without first loading the
nonDottedPaths setting from wmill.yaml, causing them to fail when run
inside folders with non-dotted names (e.g., myapp__raw_app instead of
myapp.raw_app).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude <noreply@anthropic.com>
2026-01-27 17:58:03 +00:00
Ruben Fiszel fc59dfa662 chore(main): release 1.617.2 (#7702)
* chore(main): release 1.617.2

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2026-01-27 17:38:27 +00:00
hugocasa 6b909f26a9 fix(backend): folder/group permissions workspace id change (#7703) 2026-01-27 17:31:35 +00:00
hugocasa 40fb61da07 fix: 404 triggers listing in CE (#7705) 2026-01-27 17:30:36 +00:00
centdix 3ef496609c fix(mcp): use computed base_internal_url instead of static default (#7701)
* fix(mcp): use computed base_internal_url instead of static default

Pass the actual base_internal_url (computed from the runtime port) to
the MCP backend instead of using the static BASE_INTERNAL_URL which
defaults to http://localhost:8000. This fixes internal API calls when
the server runs on a non-default port.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* fix

* remove BASE_INTERNAL_URL

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-27 17:01:24 +00:00
Guilhem e35576a1eb fix(frontend): bad overflow handling for flow schema in detail page (#7704)
* Fix bad overflow handling for flow schema

* nit
2026-01-27 17:00:50 +00:00
centdix 6899a16efb fix(cli): make wmill app new respects nonDottedPaths setting from wmill.yaml (#7700)
* update dnt

* fix nondottedpath settings
2026-01-27 15:14:42 +00:00
Ruben Fiszel bad86d862f chore(main): release 1.617.1 (#7698)
* chore(main): release 1.617.1

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2026-01-27 11:57:01 +00:00
Pyra 7287c76d95 fix(workspace-dependencies): lock hash instead of seq (#7697)
Signed-off-by: pyranota <pyra@duck.com>
2026-01-27 11:53:30 +00:00
Ruben Fiszel 6011032453 fix: fix lowercase migration with existing duplicates 2026-01-27 11:52:24 +00:00