Commit Graph
7633 Commits
Author SHA1 Message Date
Ruben Fiszelandrubenfiszel 7516a3ef0b chore(main): release 1.844.0 (#11925)
* chore(main): release 1.844.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2026-10-21 19:24:46 +02:00
Ruben FiszelandClaude Opus 5.5 037355ddec unbreak windows worker build and retry cosign signing (#11926)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 19:24:29 +02:00
892334f008 feat: serve the ai session toolset over mcp at /api/mcp (#11738)
* feat: add a workspace mcp server with the ai session toolset

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

* fix: keep workspace mcp tool calls on their own routes

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

* fix: keep a token's job tag fence on workspace mcp tool calls

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

* fix: state the workspace mcp token rule in its refusal message

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

* feat: let the workspace mcp server span workspaces chosen per token

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

* feat: let the mcp url form choose between the tools and workspace servers

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

* feat: serve the workspace mcp server as windmill mcp v2 at /api/mcp/v2

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

* feat: add read-and-run access to windmill mcp v2

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

* feat: serve the full windmill mcp experience at /api/mcp, sign-in first

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

* fix: align the mcp url form with the brand guidelines

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

* feat: serve every mcp token from /api/mcp, with one access picker

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

* feat: rename mcp access levels and keep selections to scripts and flows on /api/mcp

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

* fix: name the mcp access levels in the url caption

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

* chore: name the mcp server windmill

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

* fix: lead the mcp access picker with build and run, and spell out what a selection excludes

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

* feat: show the tools each mcp access level gives

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

* fix: list the mcp tools in a collapsible section under the access row

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

* fix: offer all scripts and flows as typed mcp tools again, as wildcard scopes

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

* fix: label the mcp selection access as scripts and flows as tools

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

* feat: link mcp run, app draft and deploy results to their windmill pages

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

* fix: mirror the session tool changes from main in the mcp server

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

* fix: keep an ai agent's identity when the ai chat deploys its resource

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

* refactor: call the api in-process from the mcp session tools

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

* fix: keep a draft that rebase_draft could not return whole

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

* fix: let read-and-run mcp tokens run scripts and flows that take secrets

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

* feat: ask mcp clients to open windmill links in a browser the user sees

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

* feat: send mcp clients condensed instructions and serve the full rules on demand

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

* refactor: put the core rules first in the mcp instructions instead of condensing them

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

* fix: go straight to the mcp sign-in page after login, without the workspace picker

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

* fix: no workspace error toast on the mcp sign-in page while logged out

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

* feat: open raw app previews on the preview alone, from mcp links and in sessions

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

* feat: link mcp script, flow and agent drafts to their editors, and agents to their page

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

* fix: keep the session preview's saved sidebar choice, fold the build log in preview-only views

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

* fix: hold mcp tokens below full access to their level on the per-workspace urls

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

* fix: revoke tokens with the new mcp scopes when the migration is reverted

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

* fix: keep an mcp token's scopes when its editor is saved without changing access

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

* fix: mint one jwt per mcp tool call, accept the old approve body, list the new scopes

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

* fix: reset the mcp token editor's picker state for each token

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

* refactor: mark only mcp selections, read levels imply no endpoint tools

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

* chore: update ee-repo-ref to b3fd7d49f2ba58f5080fabc3a5686c34a0b2684c

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

Previous ee-repo-ref: 9e960246d51401a2b0487dcffcadd0b43cd67d39

New ee-repo-ref: b3fd7d49f2ba58f5080fabc3a5686c34a0b2684c

Automated by sync-ee-ref workflow.

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
2026-10-21 19:12:49 +02:00
Ruben Fiszelandrubenfiszel d2e9768f81 chore(main): release 1.843.0 (#11917)
* chore(main): release 1.843.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2026-10-21 18:38:29 +02:00
Ruben FiszelandClaude Opus 5.5 b87486141d feat: ship php only on the full images (#11922)
* feat: ship php only on full images with a clear missing-php error

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

* fix: let a bare php or composer path resolve through PATH

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 18:01:38 +02:00
Ruben FiszelandClaude Opus 5.5 2c6bcc09c9 fix: refuse restarting a flow past an approval that was never granted (#11920)
Restarting a flow at the step right after an approval step copied the
approval step as completed, and the worker skips the gate at the restart
step, so a flow whose approval timed out or was disapproved could be
restarted past it without anyone approving. Restart resolution now
refuses a restart whose copied steps include an approval gate that never
opened, naming the step to restart from instead.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 17:48:58 +02:00
21d2a49971 feat: configurable workspace roles with per-workspace overrides (#11821)
* feat: configurable workspace roles with per-workspace overrides

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

* fix: close role review gaps in pickers, declarative sync and removal

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

* docs: keep resolve_role_name doc on its function

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

* fix: validate overrides on instance role changes and bill admins fully

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

* fix: allow pipeline drafts and keep role checks on one connection

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

* docs: list data pipelines in operator_can_draft

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

* test: expect a 403 role refusal when an operator resolves jobs

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

* feat: require a valid license for custom workspace roles

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

* fix: freeze workspace roles when the license lapses

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

* chore: pin the ee companion for workspace roles

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

* refactor: broadcast role override changes from the write path, not a trigger

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

* chore: update ee-repo-ref to b5294d38db082bdd104d5358a47695390694c05d

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

Previous ee-repo-ref: 688e00c5982865b14098f530d54280e2311994c0

New ee-repo-ref: b5294d38db082bdd104d5358a47695390694c05d

Automated by sync-ee-ref workflow.

* fix: let an admin row that kept the operator flag hold full rights everywhere

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

* fix: treat superadmin members as admins and return role names from get user

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2026-10-21 15:51:54 +02:00
Alexander PetricandClaude Opus 5.5 c04477723c fix: revoke mcp oauth grants on password change and reset (#11908)
* fix: revoke mcp oauth grants on password change and reset

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: revoke pending mcp codes and serialize grants against revocation

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: run mcp refresh theft check on the grant transaction

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: log commit failures of rejected mcp oauth exchanges

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-21 13:58:03 +02:00
78fb800904 fix(worker): render TEMP_SCRIPT_REFS placeholder in Python runner-group loader.py (#11915)
* fix(worker): render TEMP_SCRIPT_REFS placeholder in Python runner-group loader.py

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

* chore: drop unrelated rustfmt churn in python_executor.rs

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

* test: cover relative imports in a python runner group, keep the raw loader private

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

* chore: update ee-repo-ref to 32784f3907f0a25fee4a9f96fa172420f17b3fea

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

Previous ee-repo-ref: 6c36ef6e94dda5e43e04a5a08c00ef7eabb6d9a8

New ee-repo-ref: 32784f3907f0a25fee4a9f96fa172420f17b3fea

Automated by sync-ee-ref workflow.

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2026-10-21 13:29:55 +02:00
hugocasa c41d772f1d chore: update ee ref 2026-10-21 10:39:31 +02:00
AlexRV12 eda610b2f4 [ee] fix: stop handlers, apps and agents resolving untrusted refs (#11893)
* fix: stop handler, app and agent jobs resolving untrusted references

* perf: skip decoding untrusted args that hold no dollar or escape

* test: drop the transaction the recovery handler no longer takes

* fix: flag reserved names in object keys and tighten the jsonb parity test
2026-10-21 10:19:20 +02:00
Ruben Fiszelandrubenfiszel f400d520d6 chore(main): release 1.842.0 (#11878)
* chore(main): release 1.842.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2026-10-20 19:27:15 +02:00
8ddb358198 fix: refresh oauth tokens without holding a pool connection (#11905)
* fix: refresh oauth tokens without holding a connection across the exchange

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

* chore: pin ee ref for the oauth refresh fix

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

* chore: update sqlx cache for the oauth refresh queries

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

* fix: coalesce forced oauth refreshes and drop the redundant mcp visibility check

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

* fix: store refreshed oauth tokens at every linked variable and only reuse a fresh one

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

* fix: date oauth expiry from the exchange and fan out only to secret variables

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

* chore: update ee-repo-ref to 3546b6b080e0234335ed2c8e2e9cc3d595bbadca

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

Previous ee-repo-ref: 12d1fb5978e66af462398c789b861706a2367ed0

New ee-repo-ref: 3546b6b080e0234335ed2c8e2e9cc3d595bbadca

Automated by sync-ee-ref workflow.

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2026-10-20 19:23:02 +02:00
8afe0607ab fix: keep schedule push, flow advance, wac approval and scim on one pool connection (#11904)
* fix: keep schedule push, flow advance and wac approval on one pool connection

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

* fix: read flow args on the status-update tx instead of preloading them

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

* chore: pin ee ref for the scim update_group fix

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

* chore: update ee-repo-ref to c465c042eeae3c5d9a0180f62a56e8f8d3e9e162

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

Previous ee-repo-ref: dc4d0327044ddc10ef53ad0b21ae37b96cf4aad2

New ee-repo-ref: c465c042eeae3c5d9a0180f62a56e8f8d3e9e162

Automated by sync-ee-ref workflow.

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2026-10-20 19:20:00 +02:00
2c559b452f fix: stop holding a pool connection while waiting for another (#11902)
* fix: stop holding a pool connection while waiting for another

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

* fix: count only earlier occurrences as schedule handler history

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

* chore: update ee-repo-ref to ac53164fd27fe962a020f3ee944949df1f760603

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

Previous ee-repo-ref: 047764f902f10fce0156138c4240ba5d1a2e969a

New ee-repo-ref: ac53164fd27fe962a020f3ee944949df1f760603

Automated by sync-ee-ref workflow.

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2026-10-20 19:11:46 +02:00
Ruben FiszelandClaude Opus 5.5 e6c8ef18a1 fix: write a push's runnable settings before it opens its transaction (#11897)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 18:31:38 +02:00
hugocasaandClaude Opus 5.5 c3112f8e07 add missing sqlx cache entry for the Slack disconnect query (#11892)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-20 10:26:00 +02:00
5d0a8a9c15 fix(mcp): escape JSON inlined in the MCP OAuth callback page (#11880)
* fix(mcp): escape JSON inlined in the MCP OAuth callback script

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

* chore: update ee-repo-ref to dd0c7087f9b2453260f3d73b0d589042b4393a1d

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

Previous ee-repo-ref: b8384a2346c2c228ac645e3209a04b1f08627278

New ee-repo-ref: dd0c7087f9b2453260f3d73b0d589042b4393a1d

Automated by sync-ee-ref workflow.

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
2026-10-19 23:22:00 +02:00
4c254c60ed chore: read the caller once in workspace settings handlers (#11881)
* chore: read the caller once in workspace settings handlers

* chore: update ee-repo-ref to bfbf9154df83c5256a35181fc9ea3b715b66c35f

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

Previous ee-repo-ref: 6fbcc79cdd5bb30b362ae2a44e651ede66830ee3

New ee-repo-ref: bfbf9154df83c5256a35181fc9ea3b715b66c35f

Automated by sync-ee-ref workflow.

---------

Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
2026-10-19 23:18:23 +02:00
35b250e767 feat: let AI agents answer in Slack (#11630)
* feat: let AI agents answer in Slack

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

* fix: dedupe Slack deliveries by message and route only connected workspaces

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

* fix: key Slack conversations with the workspace secret and require signed Slack requests

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

* fix: keep a named agent on its thread after an empty question and flag a missing Slack signing secret

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

* fix: register the slack_agents token scope domain

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

* feat: name the Slack bot, offer Slack only for chat agents, align the agent API tab with webhooks

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

* fix: warn when Slack can't be reached instead of showing a placeholder bot name

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

* feat: chat SDK, streaming examples and a copyable integration prompt on the agent API tab

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

* fix: keep the base path in the chat SDK example, list slack_agents token scopes, bound the bot name lookup

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

* feat: opt into the AI agent Slack scopes at connect, store the signing secret in instance settings, surface the integration prompt

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

* fix: dispatch Slack agents only on a verified request, warn when the connection lacks the agent scopes, register the callback redirect URLs

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

* fix: point the agent chat examples at @windmill-labs/chat-sdk

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

* fix: build the agent API examples on the configured API base URL

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

* fix: say that a channel's default agent takes its /windmill commands

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

* feat: list the channels answered by an agent in the workspace Slack settings

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

* refactor: keep the Slack signing secret in SLACK_SIGNING_SECRET, warn at connect when it is missing, move the integration prompt to a tab

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

* fix: wrap copyable code blocks at word boundaries

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

* fix: open the agent panel on its API tab, put the AI prompt first, list channels like the critical alert channels, cap the manifest's height

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

* feat: group the agent API examples by AI prompt, TypeScript and HTTP, with React and framework-free chat SDK examples

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

* fix: have the agent integration prompt read the token from WINDMILL_TOKEN

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

* fix: trim the agent API tab intro, name the Slack app in mentions, define the SDK example's output

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

* feat: share agents in selected Slack channels, run as their identity

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

* feat: share agents in Slack channels with anyone or workspace members only

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

* feat: set who can ask an agent in Slack and its channels from its settings

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

* fix: treat a missing Slack audience as workspace members

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

* feat: list Slack channels before who can ask, name the run-as user in each choice

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

* fix: name the next deploy's run-as user in Slack choices, turn agents on by default when connecting

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

* feat: answer agents on mentions only, group agent settings into sections

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

* feat: show how to ask an agent in Slack first, keep agent scopes opt-in

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

* feat: list agents shared in Slack in a setting card and table

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

* chore: update ee-repo-ref to 10bc314c95094c0851743cbca31b50a3b37d42fd

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

Previous ee-repo-ref: 47d8fbac461171bd93d888b49cc1c7730a2b3f96

New ee-repo-ref: 10bc314c95094c0851743cbca31b50a3b37d42fd

Automated by sync-ee-ref workflow.

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2026-10-19 23:16:17 +02:00
Ruben Fiszelandrubenfiszel de66e47b1c chore(main): release 1.841.0 (#11860)
* chore(main): release 1.841.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2026-10-19 01:53:42 +02:00
Ruben FiszelandClaude Opus 5.5 a7561fd8bd fix: insert ApiAuthed into request extensions in no-auth mode (#11868)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 01:38:00 +02:00
Ruben FiszelandClaude Opus 5.5 69d36f77da feat: probe nsjail with a real jail and add a gVisor compat mode (#11865)
* feat: probe nsjail with a real jail and add a gVisor compat mode

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

* fix: route dbt captured phases through the gVisor compat step and harden the probe dir

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

* feat: patch nsjail with a gvisor_compat option instead of applying rlimits from the worker

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

* fix: keep DuckDB jailed on a sandboxed worker whose nsjail probe failed

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

* docs: link the upstream gVisor issues from the nsjail patch

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 01:33:35 +02:00
Ruben FiszelandClaude Opus 5.5 5c205fa469 feat: let ALLOW_PRIVATE_MCP_SERVER_URLS name the private hosts it allows (#11869)
* feat: let ALLOW_PRIVATE_MCP_SERVER_URLS name the private hosts it allows

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

* fix: warn once about invalid MCP private-host entries

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-19 01:18:52 +02:00
Ruben FiszelandClaude Opus 5.5 19ec5d3cd8 fix: reject out-of-range integer args to narrow SQL types instead of wrapping (#11864)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 12:27:06 +02:00
Ruben FiszelandClaude Opus 5.5 578437885a clarify the no-tags autoscaling warning (#11861)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 11:12:17 +02:00
8b14a78822 fix: warn when an autoscaled worker group has no tags to count (#11859)
* fix: warn when an autoscaled worker group has no tags to count

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

* fix: drop warning autoscaling events when rolling the migration back

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

* fix: drop the autoscaling warning event and its migration

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

* fix: tell agent groups to match custom tags to their token tags

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

* chore: update ee-repo-ref to a673d2e3fe12927921be86c3a52bd9c956759c65

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

Previous ee-repo-ref: bbb21dad8a18f0593a2e1a2f2930b427f44404cd

New ee-repo-ref: a673d2e3fe12927921be86c3a52bd9c956759c65

Automated by sync-ee-ref workflow.

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2026-10-18 10:47:48 +02:00
be23abb360 feat: let agent workers authenticate with a workload identity token (#11858)
* feat: let agent workers authenticate with a workload identity token

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

* fix: throttle failed workload identity key fetches per issuer

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

* fix: keep stale workload identity keys through an issuer outage

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

* fix: refuse workload identity rules with an empty claim value

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

* fix: validate workload identity issuers in declarative sync and share the JWKS cache

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

* fix: say workload identity issuers are optional in agent worker settings

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

* chore: update ee-repo-ref to 96e8e2aa15bdc5968a1dae10f4e81d47d7ea49e0

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

Previous ee-repo-ref: 0e98880edb8db269d53120ca606025c81f320f5c

New ee-repo-ref: 96e8e2aa15bdc5968a1dae10f4e81d47d7ea49e0

Automated by sync-ee-ref workflow.

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2026-10-18 10:44:50 +02:00
Ruben FiszelandClaude Opus 5.5 9e5c988770 gate unix-only bun staging items for the Windows worker build (#11856)
* fix: gate unix-only bun staging items so the Windows worker build compiles

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

* fix: compile bun_install_can_stage only where it is used

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-18 02:47:24 +00:00
Ruben Fiszelandrubenfiszel 35d59e9020 chore(main): release 1.840.0 (#11840)
* chore(main): release 1.840.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2026-10-17 23:24:18 +02:00
Ruben FiszelandClaude Opus 5.5 7a2d913458 perf: opt into sqlx test templates through SQLX_TEST_TEMPLATE (#11853)
* perf: opt into sqlx test templates through SQLX_TEST_TEMPLATE

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

* fix: raise the sqlx test connection cap so concurrent tests cannot starve

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 23:23:53 +02:00
Ruben FiszelandClaude Opus 5.5 47b736ef27 chore: bump npm in worker images to 12 (#11839)
* fix: pass --save-text-lockfile only to bun installs

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

* fix: run bun and npm installs under nsjail sandboxing

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

* fix: strip workspace-dependencies header from npm-mode package.json

* chore: bump npm in worker images to 12

* docs: describe npm 12 install-script policy in install comment

* fix: mount npmrc cafile paths given with ${VAR} or ~ in the install jail

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

* perf: keep bun's cache hardlinks for jailed installs

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

* fix: harden the bun install staging dir and npm-mode jail mounts

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

* fix: reach the bun staging dir only through no-follow descriptors

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

* fix: create bun staging files new and check outputs after the move

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

* feat: add DISABLE_BUN_INSTALL_SANDBOX to run bun installs unjailed

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

* feat: retry npm installs refused git or remote fetches with a deprecation warning

* fix: point the npm fetch fallback warning at config that works on CE too

* fix: read npm fetch refusals from its debug log and honor every npm config source

* fix: force text output for the npm config check

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 22:59:34 +02:00
Ruben FiszelandClaude Opus 5.5 03b540979a test: lift the shared sqlx test pool cap so concurrent tests cannot starve (#11855)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 22:58:56 +02:00
Ruben FiszelandClaude Opus 5.5 5fc5327e60 test: drop empty doctest and lib-test targets, ignore service tests (#11852)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 22:30:42 +02:00
Ruben FiszelandClaude Opus 5.5 69745894fa test: drain pg arg and custom type cases on one worker (#11849)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 22:14:32 +02:00
Ruben FiszelandClaude Opus 5.5 5f5bc16d59 test: stop backend tests waiting out real time they do not need (#11851)
* test: stop backend tests waiting out real time they do not need

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

* test: delete the unused workspace_dependencies fixture

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 22:11:29 +02:00
Ruben FiszelandClaude Opus 5.5 6a12e7ea49 test: fix error handler test flake and merge handler test binaries (#11850)
* test: fix error handler test flake and merge handler test binaries

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

* test: tighten workspace handler test comments

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 22:04:45 +02:00
Ruben Fiszel 4ed6c1a6ce perf: clone sqlx test databases from a migrated template (#11848)
* perf: clone sqlx test databases from a migrated template

* perf: lock sqlx test templates shared while cloning

* chore: note the tag that keeps the sqlx fork rev fetchable
2026-10-17 21:59:41 +02:00
Ruben FiszelandClaude Opus 5.5 6646c86351 fix: run bun and npm installs under nsjail sandboxing (#11845)
* fix: pass --save-text-lockfile only to bun installs

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

* fix: run bun and npm installs under nsjail sandboxing

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

* fix: mount npmrc cafile paths given with ${VAR} or ~ in the install jail

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

* perf: keep bun's cache hardlinks for jailed installs

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

* fix: harden the bun install staging dir and npm-mode jail mounts

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

* fix: reach the bun staging dir only through no-follow descriptors

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

* fix: create bun staging files new and check outputs after the move

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

* feat: add DISABLE_BUN_INSTALL_SANDBOX to run bun installs unjailed

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 09:59:33 +00:00
Ruben FiszelandClaude Opus 5.5 7a8cb62fa1 fix: mount python script modules into the nsjail sandbox (#11846)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 09:26:21 +00:00
feb7b1ad90 feat: add a no_network annotation for sandboxed jobs (#11844)
* feat: add a no_network annotation for sandboxed python, bash, bun and r jobs

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

* fix: keep nodejs relative imports and dedicated workers working under no_network

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

* fix: bundle bun no_network jobs so relative imports resolve before the run

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

* chore: point ee-repo-ref at the runner group no_network fix

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

* refactor: state the no_network token rule once

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

* feat: refuse no_network jobs whose workspace imports would be fetched at run time

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

* fix: let type-only workspace imports through the no_network import check

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

* chore: update ee-repo-ref to ca4a1959a0d2257d413a57349939053ac3473c6b

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

Previous ee-repo-ref: 3841923cfd117b6b907ac3e84b26f07bde41f8ed

New ee-repo-ref: ca4a1959a0d2257d413a57349939053ac3473c6b

Automated by sync-ee-ref workflow.

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2026-10-17 09:25:55 +00:00
Ruben FiszelandClaude Opus 5.5 b0c97b34ca fix: let ALLOW_PRIVATE_AI_BASE_URLS name the private hosts it allows (#11841)
* fix: refuse dot segments in AI proxy paths

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

* fix: refuse spaces, query and fragment markers in AI proxy paths

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

* fix: refuse percent signs in AI proxy paths

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

* fix: let ALLOW_PRIVATE_AI_BASE_URLS name the private hosts it allows

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

* fix: refuse loose and wildcard allowlist entries, judge embedded v4

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

* fix: never admit local-use NAT64 addresses through an allowlist net

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 08:36:22 +00:00
Ruben FiszelandClaude Opus 5.5 268415623b fix: keep script and flow deploys off a second pool connection (#11843)
* fix: keep script and flow deploys off a second pool connection

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

* fix: raise a folder default's errors only when it applies

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 08:29:57 +00:00
Ruben FiszelandClaude Opus 5.5 0b54ebc73d fix: skip the fork lock when a fork creation has no storage to purge (#11842)
* fix: skip the fork lock when a fork creation has no storage to purge

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

* fix: word the fork lock skip for both purge callers

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 08:29:14 +00:00
Ruben FiszelandClaude Opus 5.5 89f36a73d1 fix: refuse dot segments in AI proxy paths (#11837)
* fix: refuse dot segments in AI proxy paths

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

* fix: refuse spaces, query and fragment markers in AI proxy paths

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

* fix: refuse percent signs in AI proxy paths

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 09:32:59 +02:00
Ruben FiszelandClaude Opus 5.5 09a59110d9 fix: scope delete_jobs side-table deletes to the request workspace (#11836)
* fix: scope delete_jobs side-table deletes to the request workspace

The /jobs/delete purge deleted resume_job, v2_job_runtime, v2_job_status
and concurrency_key rows by job id alone. Those tables have no
workspace_id, so a workspace admin could pass another workspace's job ids
and wipe its flow status, runtime, resume and concurrency rows. Scope
each delete through v2_job, as zombie_job_counter already is.

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

* refactor: filter delete_jobs ids to the workspace once

Resolve the request's job ids against v2_job up front and run every
delete on that filtered list, instead of repeating the v2_job subquery in
each side-table delete. The workspace scoping lives in one place and the
side-table deletes keep their plain id form.

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 09:32:01 +02:00
Ruben FiszelandClaude Opus 5.5 16c8be2355 feat: warn at worker startup when WHITELIST_ENVS forwards a secret-shaped variable (#11838)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-17 09:29:49 +02:00
Ruben FiszelandClaude Opus 5.5 533670f577 fix the protection rules race and the Windows nsjail profile test (#11835)
* test: run the isolated-forks rule test in its own workspace

PROTECTION_RULES_CACHE is process-wide and keyed by workspace id, so the
other base-fixture tests in protection_rules.rs, running concurrently on
their own databases, could cache test-workspace's rules without the
RequireIsolatedForks ruleset and let the fork through to the data table
copy (400 instead of 403) on main.

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

* test: match nsjail profile lines so the envar check passes on CRLF checkouts

script_profiles_take_envars_before_their_fixed_ones searched for
"\n{ENVARS}\n", which a Windows checkout (CRLF) never contains, failing
cargo_test_windows since v1.834.0.

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 23:34:40 +02:00
Ruben Fiszelandrubenfiszel a19a00fd83 chore(main): release 1.839.0 (#11832)
* chore(main): release 1.839.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
2026-10-16 22:45:22 +02:00
ab4e790a21 feat: add a Require isolated forks protection rule (#11834)
* feat: route the python SDK's S3 client settings through the S3 proxy

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

* fix: drop the boto3 config key and expose the proxied bucket to polars

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

* chore: update ee-repo-ref

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

* fix: proxy S3 settings only for server-signed tokens and keep tls verify

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

* chore: update ee-repo-ref

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

* feat: isolate fork object storage under a per-fork prefix with read-through

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

* fix: guard fork storage isolation against traversal, shared lakes and orphaning

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

* fix: serialize fork purges with same-id creation and guard shared middle forks

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

* fix: drop fork storage mappings on every replica and lock fork deletion against child creation

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

* chore: update ee-repo-ref

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

* chore: update ee-repo-ref

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

* chore: update ee-repo-ref

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

* wip: require isolated forks rule

* feat: add a Require isolated forks protection rule

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

* fix: recheck isolated forks under the datatable lock and judge bypass in the base

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

* chore: update ee-repo-ref to 455681e55eb7cdfcfdb7cd79cbae75b333e07943

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

Previous ee-repo-ref: 93f26e3cf816e4eb97b7d4dbbb5fc97fdf9821af

New ee-repo-ref: 455681e55eb7cdfcfdb7cd79cbae75b333e07943

Automated by sync-ee-ref workflow.

* fix: exempt only datatables the base does not own, compact fork data choices

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

* test: pin the isolated-forks owner check, fix its docs wording

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2026-10-16 22:40:21 +02:00