Commit Graph
15270 Commits
Author SHA1 Message Date
AlexRV12 19fc07faa9 fix: use the session workspace's user in three AI session places (#11808) 2026-10-16 17:52:58 +02:00
Ruben FiszelandClaude Opus 5.5 6aec4488eb fix: give inline script runs their own job dir (#11822)
* fix: give inline script runs their own job dir

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

* fix: remove the inline job dir when the run is dropped

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 17:52:28 +02:00
Ruben FiszelandClaude Opus 5.5 c09038b106 fix: hold mcp token references to resource reference scopes (#11803)
* fix: require variables:read for the token variable of an mcp resource

A token scoped to resources:read/write on an MCP resource could have the API
decrypt the variable the resource's `token` points at and send it as a bearer
to the resource's URL. The url and header `$var:` references already required
variables:read on the variable; the token reference now does too, checked before
the OAuth refresh touches that variable.

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

* fix: let an mcp resource's scope cover the variables it references

A scoped token reading or calling an MCP resource resolved its token variable
with the resource scope alone, but its url and header variables also needed
variables:read on each. The resource scope now covers all three; RLS still
bounds them to secrets the caller can read. Reverts the token-side check from
the previous commit.

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

* fix: scope resource references when they are written, not when they are read

A token scoped to a resource now reads everything that resource references
(`$var:`, `$jsonvar:`, `$res:`), through get_value_interpolated and the MCP
tool routes alike. What makes that safe moves to the write: create, update,
update_value and version restore refuse a scoped token adding a reference it
holds no read scope on. References the stored value already carries are kept,
since whoever put them there was allowed to.

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

* fix: hold every resource reference writer to its own user's read rights

A resource-scoped reader resolves stored references as itself, so an unscoped
session could plant a reference to a secret its own user cannot read and have
a reader's scoped token resolve it. Adding a reference now also requires the
writer's user to see its target under RLS. A reference to nothing yet stays
allowed, since a promotion pushes resources before the secrets they use.

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

* fix: vet only variable references on write and keep nested resources scoped

A nested `$res:` brought along the variables of a resource the writer could see
but whose references it could not read, and what it references can change after
it is written. It needs its own read scope again, and the write check covers
only `$var:`/`$jsonvar:`.

An MCP token stored as a bare path resolved as a variable without being vetted
on write. It now needs its own variables:read scope, and the `$var:` prefix is
parsed with strip_prefix, as the write check does.

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

* fix: keep variable scopes on result-cache resources

The worker writes job output to g/results/<hash> straight to the table, so its
references never pass the write check. A token scoped to such a resource still
needs read scope on the variables it references.

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

* fix: require read rights on kept references and pin result-cache resources to g/results/

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

* fix: check resource variable references at read time, with wildcard resource scopes covering matching variables

Returns to the read-time rule: a variable a resource references needs
variables:read on it, unless it is the resource's linked secret or a wildcard
pattern in the token's resources: scopes matches it. The MCP token reference is
now held to that rule like the url and header references.

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 17:28:29 +02:00
Ruben FiszelandClaude Opus 5.5 d1a13d9054 feat: name mcp script and flow tools after their last path segment (#11817)
* feat: name mcp script and flow tools after their last path segment

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

* fix: skip suffix expansion for mcp tool names longer than any short name

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 17:17:18 +02:00
hugocasaandClaude Opus 5.5 153a871550 fix: truncate long row titles instead of wrapping (#11815)
* fix: truncate long row titles next to a title badge

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

* fix: show the full row title on hover

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 14:24:05 +00:00
Ruben FiszelandClaude Opus 5.5 7c63a30edd fix: let deployed low-code apps run database studio queries again (#11816)
* fix: let deployed low-code apps run runtime-built inline queries again

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

* fix: limit id-less app runs to the database studio's sql languages

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

* test: cover the deployed-row exclusion with sql content

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 14:23:51 +00:00
Ruben Fiszelandwindmill-internal-app[bot] 33d4049db0 feat: accept Ed25519-signed license keys alongside RSA (#11810)
* feat: accept Ed25519-signed license keys alongside RSA

* fix: gate the Ed25519 renewal flag on the worker fleet version

* chore: update ee-repo-ref to 664708fff04d4f9e0660bcae3edb307fb2c9481b

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

Previous ee-repo-ref: 5c18fdde212aa1185c405be9c5e194209c5a8ee9

New ee-repo-ref: 664708fff04d4f9e0660bcae3edb307fb2c9481b

Automated by sync-ee-ref workflow.

---------

Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2026-10-16 10:16:22 +02:00
Ruben Fiszel eb98fd1e99 chore: upload EE debug info to a private bucket, not GitHub releases (#11809)
* chore: upload EE debug info to a private bucket, not GitHub releases

* chore: pass tag and arch to the debug upload through env
2026-10-16 10:03:18 +02:00
Ruben Fiszel b86909fc81 feat: make the frontend installable as a progressive web app (#11805)
* feat: make the frontend installable as a progressive web app

* fix: keep public app pages out of the console manifest

* fix: link the manifest from the console layout so no shared page is installable
2026-10-16 09:26:09 +02:00
2ef0c0d8e1 fix: emit a single email claim in job OIDC tokens (#11804)
* fix: emit a single email claim in job OIDC tokens

Bumps the EE ref to drop the duplicate standard email claim from the job
token mint, and asserts the raw payload carries one email key.

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

* test: note the single-email check in the OIDC claim test doc

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

* chore: update ee-repo-ref to d29a7c0dad120e137105b1186d0bbe3ea1504b5d

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

Previous ee-repo-ref: d64df5c1787e4404c99a41a97fca22668a669c4d

New ee-repo-ref: d29a7c0dad120e137105b1186d0bbe3ea1504b5d

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-16 09:24:51 +02:00
Ruben FiszelandClaude Opus 5.5 a03ec44343 chore: bump git sync and init hub scripts to cli 1.837.0 (#11806)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-16 09:08:52 +02:00
Ruben Fiszelandrubenfiszel 1fe3858a6d chore(main): release 1.837.0 (#11801)
* chore(main): release 1.837.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
v1.837.0
2026-10-15 18:51:08 +00:00
hugocasaandClaude Opus 5.5 0b980546b1 feat: agents run on behalf of their deployer (#11430)
* Revert "docs: agent editor comments describe runs as the caller"

This reverts commit d94919c9fe.

* Revert "refactor: agents run as the caller, with a note on what a shared one needs"

This reverts commit 0748a2fb51.

* fix: a run as an identity continues only the caller's own conversation

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

* fix: an agent run as its identity takes only attachments its caller may read

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

* fix: the resource editor keeps an agent's identity on an admin's save

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

* chore: regenerate workspace tool schemas for preserve_on_behalf_of

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

* fix: the rust client sets preserve_on_behalf_of on resource writes

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

* feat: agents run on behalf of their identity only when they opt in

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

* fix: an agent holds an identity only while it runs on behalf of it

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

* chore: reduce the agent identity migration to clearing untrusted keys

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

* fix: refuse decoded variable references in inputs to an agent run as its identity

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

* fix: user renames and offboarding re-point an agent's identity

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

* fix: refuse model-written tool arguments that the tool's job would interpolate

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

* chore: agent on-behalf-of migration after main's

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

* fix: the agent identity migration also clears trashed agents

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 19:31:21 +02:00
Ruben Fiszelandrubenfiszel 4361a41b3b chore(main): release 1.836.0 (#11784)
* chore(main): release 1.836.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
v1.836.0
2026-10-15 18:57:10 +02:00
Guilhem eda43ddc41 feat: let the session agent read folder and group permissions (#11796)
* feat: let the session agent read folder and group permissions

* fix: keep group extraPerms in the session agent's group listing
2026-10-15 18:51:24 +02:00
Ruben FiszelandClaude Opus 5.5 a9aa2b8229 feat: share AI sessions read-only by link, optionally public (#11799)
* feat: share AI sessions read-only by link, optionally public

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

* fix: render shared session snapshots from an allowlist, without mermaid or remote images

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

* style: make the session share button icon-only

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

* fix: safe reasoning links, artifact list and full-load exits on shared sessions

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 18:51:11 +02:00
Ruben FiszelandClaude Opus 5.5 f827ba0566 feat: resolve canceled jobs and re-run them in limited batches (#11797)
* feat: resolve canceled jobs and batch re-run them in limited batches

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

* fix: offer the re-run batch limit only for failed or canceled filters

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

* fix: label an unresolved canceled run as canceled in its status badge

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

* fix: tell the user that sources a batch could not re-run block the next batch

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

* feat: warn when a re-run batch includes resolved runs and offer to hide them

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

* feat: say in the re-run confirmation that failed or canceled sources get resolved

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 18:19:23 +02:00
AlexRV12 7da2344813 fix: let raw app SDK tokens read the viewer's identity without a toggle (#11790)
* feat: grant raw app SDK tokens identity access without a toggle

* test: pin the implicit identity scope on raw app SDK tokens

* refactor: let raw app SDK tokens reach whoami at the route check
2026-10-15 17:21:56 +02:00
GuilhemandClaude Opus 5.5 1f1df1254e fix: relock scripts and flow steps whose code changed on deploy (#11794)
* fix: relock scripts deployed from a draft that carries the deployed lock

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

* chore: reword fetchDeployed lock comment

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

* fix: drop the lock of flow steps whose code the chat changed

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

* fix: drop stale flow step locks at deploy, from drafts and the flow editor

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

* fix: keep locks of copied flows and never block a deploy on the lock check

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

* fix: keep the lock of a renamed or duplicated flow step with unchanged code

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-15 17:21:28 +02:00
f9513e82ee feat: run duckdb jobs out of process under job isolation, drop the engine fork, bump to 1.5.6 (#11780)
* feat: prototype running duckdb jobs out of process inside nsjail

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

* fix: bound runner output, honor force install outside the jail, set oom score before exec

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

* fix: gate the duckdb runner bin behind a feature and decode pre-install errors

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

* feat: allowlist-only policy inside the duckdb jail, with its own extension cache

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

* feat: run duckdb jobs out of process under job isolation and drop the engine fork

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

* feat: runner everywhere, stock duckdb engine, no sql fence

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

* chore: update ee-repo-ref to 24bdc6615b3f651141fb740e2cacf9c3c2d81252

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

Previous ee-repo-ref: 73452bbc280cc9ca33cf0fe325d26c2fbf3aace4

New ee-repo-ref: 24bdc6615b3f651141fb740e2cacf9c3c2d81252

Automated by sync-ee-ref workflow.

* fix: pass the windows system env and TZ to the duckdb runner

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

* feat: cap a jailed duckdb job's disk use from the worker, 6GiB by default on cloud

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

* fix: keep a disk-backed jail tmp under the duckdb disk cap

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

* chore: drop the benchmark scaffolding and bump duckdb to 1.5.6

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-15 16:49:50 +02:00
GuilhemandClaude Opus 5 8c0185d55a feat: let operators save resource and variable drafts (#11736)
* feat: operators get AI sessions

`prefersSessionHandoff` stops taking the role, so every AI entry point an operator
can reach — Ask AI, the home composer, Open in session, the flow editor's hand-off,
the raw-app template picker — opens a session for them like anyone else. The
sessions page drops its refusal, and the layout stops keeping them on the docked
chat.

In the sidebar they now get the Workspace/AI Sessions switch and session mode, and
lose the Ask AI entry that stood in for them, since the pane behind it is no longer
the one they are sent to.

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

* feat: operators get run-oriented examples in the home composer

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

* docs: note builder_flows in the operator composer examples comment

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

* feat: gate session tools and editors on operator rights

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

* feat: keep operator AI sessions behind a browser opt-in

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

* fix: keep flows refused in the prompt for operators without builder rights

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

* refactor: decide every frontend edit check through one editRights module

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

* fix: let admins who are also operators open session editors, as drafts.rs does

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

* feat: let operators with manage rights save schedule and trigger drafts

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

* fix: keep rebase_draft from operators who can only draft schedules and triggers

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

* feat: let operators save resource and variable drafts

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

* fix: name deploy and delete tools only where a kind is left to act on

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

* fix: list an operator's draft-only resources and variables while they may draft them

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

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-15 16:43:11 +02:00
64e1630d49 fix: let Teams handlers post with job tokens again (#11792)
* fix: let job tokens post Teams messages to their own workspace's team

* chore: point ee-repo-ref at the Teams job-token check

* chore: update ee-repo-ref to 3b6bd2b15d9bddb0bb8f1de08b30b897db0415b4

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

Previous ee-repo-ref: e8e4bcd63d6fc804d29e67d42ca6d4163b144a33

New ee-repo-ref: 3b6bd2b15d9bddb0bb8f1de08b30b897db0415b4

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-15 16:41:21 +02:00
3ce2f653c9 count homepage ai session hero removals and re-pins (#11781)
* feat: count homepage ai session hero removals and re-pins

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

* chore: update ee-repo-ref to 0253ffdd6c0b0f1ba162a43d19aed56bc7bd7a71

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

Previous ee-repo-ref: a5d4fd2b21ffd0a6ced604c34d39a5747d9ea940

New ee-repo-ref: 0253ffdd6c0b0f1ba162a43d19aed56bc7bd7a71

Automated by sync-ee-ref workflow.

---------

Co-authored-by: Claude Opus 5.5 (1M context) <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-15 16:38:56 +02:00
GuilhemandClaude Opus 5.5 3bee9c9401 fix: show the app's summary in the app viewer's page header (#11782)
The viewer registered its header item with the path only, so a deployed app's
summary never reached the band. It is read from the lite app endpoint the viewer
already calls, which also covers sandboxed low-code apps whose content loads in
an iframe.

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-15 16:36:38 +02:00
GuilhemandClaude Opus 5.5 6d76781d4e drop the breadcrumb navigation picker on sessions (#11793)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-15 16:31:49 +02:00
Ruben FiszelandClaude Opus 5.5 aca7fed33d fix: relock apps in place so imported script changes reach them (#11789)
* fix: relock apps in place so imported script changes reach them

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

* fix: requeue an app relock whose version was rewritten meanwhile

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

* fix: relock every component of the version a superseded app relock requeues

Also share raw-app runnable dependency extraction between the worker and the dependency-map rebuild, and take no-key-update row locks, which still order against a deploy's UPDATE without blocking app_script inserts.

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

* fix: relock every component when an app relock runs on a newer version

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

* fix: resolve a requeued app relock's components when it runs

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

* fix: regenerate every lock when an app relock relocks every component

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 16:27:41 +02:00
Ruben FiszelandClaude Opus 5.5 f662828a30 test: fix backend integration tests broken since #11777 (#11791)
* test: expect app scoping to refuse a foreign app_script id in app_preview_auth

#11777 scopes run-mode app_script ids to their app, so another app's id is
now refused with 401 before the content-hash pin check is reached.

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

* test: run end_user_email inline scripts through the deployed app_script id

#11777 runs inline code only through the app_script rows the deployed lite
value references once it exists, so id-less raw_code is refused. Shape the
fixtures like real apps (nested inlineScript) and run by the deployed id.

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

* test: wait for both dedicated worker jobs on one listener

The second completed-job listener was opened only after the first job
completed, so a second job that finished first was never seen and the test
hung until the 90s worker timeout.

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 16:23:12 +02:00
Ruben FiszelandClaude Opus 5.5 718aad7396 feat(cli): sync an app's custom path as a workspace-specific file (#11786)
* fix(cli): keep a raw app's custom_path on sync pull

The pull rendered raw_app.yaml without custom_path, so every pull removed
the line and every push --dry-run listed the file as modified, while the
deployed app still had it and push still sent it.

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

* fix(cli): send custom_path on app update only when it changed

The backend requires admin for any update carrying custom_path, so the value
a pull now writes into raw_app.yaml made every non-admin push of that app fail.

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

* feat(cli): sync an app's custom path as a workspace-specific file

Unless app routes are workspace-prefixed, a custom path is unique across the
instance, so a value carried in the app file every workspace shares can never
be promoted. Sync now renders it as <app>.<workspace>.custom_path.yaml next
to the app folder, always workspace-specific. A push applies only the target
workspace's file and leaves the deployed custom path alone without one; a
checkout that still has custom_path in its app file converges on push, and
the next pull moves it out.

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

* test(cli): drop the custom_path rationale repeated from changedCustomPath

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

* fix(cli): apply a custom path pushed with its raw app, and converge a cleared one

The raw-app bundle collapse kept one change per group and dropped the
custom-path file grouped with it, so a push editing both deployed only the
app. App files and their custom-path file now group under the app path in
both folder layouts, and the collapse keeps the custom-path change.

A cleared custom path (custom_path: '') has no file in the export, so the
push diff listed it as added forever; an empty value with nothing deployed
is now in sync.

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

* fix(cli): never read a file inside a flow or app folder as workspace-specific

The workspace-name segment of the workspace-specific patterns spans '/', so a
raw-app asset such as settings.prod.custom_path.json was taken for a
workspace's file and dropped from the pull. Like fileset children, files
inside a flow or app folder are content of that item, whatever their name.

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

* fix(cli): recognize a custom-path file only beside its app

isCustomPathFile excluded app and flow folders but still matched a fileset
child such as data.fileset/settings.custom_path.json, so a push dropped
edits to it and a pull renamed it. A custom-path file is now identified by
where it sits: its name is <app>[.<workspace>].custom_path.<ext> and no part
of its directory is an item's folder.

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 13:49:44 +00:00
Ruben FiszelandClaude Opus 5.5 7eee210d76 perf: drive schedule already-exists check from an indexed queue lookup (#11783)
* perf: drive schedule already-exists check from v2_job_queue

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

* perf: index v2_job_queue by workspace and scheduled_for

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 12:36:39 +00:00
hugocasaandClaude Opus 5.5 ab8983543b fix: send Azure Foundry gpt-5.5+ models to the Responses API (#11788)
* fix: send Azure Foundry gpt-5.5+ models to the Responses API

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

* fix: name Azure AI Foundry in the reasoning summary notice

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 12:02:37 +00:00
hugocasa b563f5cb51 fix(cli): include script modules in wmill dev previews (#11787)
* fix(cli): include script modules in wmill dev previews

* fix(cli): keep dotted script paths whole on wmill dev edits
2026-10-15 12:01:33 +00:00
526da60da9 feat: let raw app backend runnables import each other (#11777)
* fix: iterate workspace picker nav items without spreading a NodeList

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

* feat: let raw app backend runnables import each other

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

* fix: preview only imported sibling runnables and reserve the main id

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

* fix: resolve a module's workspace imports from the entrypoint's folder

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

* fix: scope run-mode app scripts to their app and key bundles on module imports

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

* fix: clone app_version_lite into forks with remapped app_script ids

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

* docs: update the run-mode raw_code comment for app-scoped ids

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

* fix: run module-bearing app scripts only from the deployed version

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

* fix: run deployed inline code only through the deployed version's rows

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

* fix: in-workspace app viewers run through the deployed rows

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

* fix: let the app embed token read the app's lite value

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

* fix: pass sibling modules to the agent-worker Python preview resolver

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

* docs: list the lite route in the app embed scope comment

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

* chore: update ee-repo-ref to 455f98540fb042d4f624dcec681dab88b2c8df22

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

Previous ee-repo-ref: 927d3592a6b2127ffe16fb14eb47f5bd66afc026

New ee-repo-ref: 455f98540fb042d4f624dcec681dab88b2c8df22

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-15 13:36:34 +02:00
hugocasaandClaude Opus 5.5 813c080d46 feat: sandbox new low-code and raw apps by default (#11760)
* feat: sandbox new low-code and raw apps by default

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

* fix: navigate the top page from plain links in a sandboxed low-code app

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

* fix: allow clipboard and fullscreen in sandboxed raw-app frames

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

* fix: leave non-http links to the browser in the sandboxed app frame

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

* fix: let a link's own click handlers run before relaying it out of the frame

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

* fix: read link attributes so SVG anchors relay correctly

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

* refactor: tidy the app deploy drawer to the brand guidelines

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

* refactor: show enabled frontend api scopes as badges, rename runs-as section

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

* fix: keep frontend api access collapsed by default, badges next to its title

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

* refactor: lead the run-on-behalf-of section with the user picker

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

* docs: explain publisher execution and WM_END_USER_EMAIL in the run-on-behalf-of tooltip

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

* docs: shorten the run-on-behalf-of tooltip, mention viewer data access for raw apps

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

* docs: tell the AI what breaks in a sandboxed raw app and that turning it off is a security risk

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

* feat: warn in the deploy drawer when an app is not isolated

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

* refactor: drop the sandbox toggle help line

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

* docs: say when to turn sandbox isolation off in the toggle tooltip

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

* refactor: show who a non-deployer's app runs as, read-only

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

* fix: show a new app runs as the deployer, gray read-only user line

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

* refactor: read-only on-behalf-of display as an opt-in selector prop

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

* fix: show a folder's default run-as user on a new app instead of the deployer

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

* fix: deploy an app under a group folder default without a mismatched email

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

* revert: leave a new app's run-as user unselected, as on main

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

* feat: warn in the app deploy drawer when a deploy changes the run-as user

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

* fix: snapshot the deployed policy so later edits don't change the saved app

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 12:54:00 +02:00
Ruben FiszelandClaude Opus 5.5 4f712318c3 feat: run previews as the runnable's on_behalf_of identity (#11778)
* feat: run script and flow previews on behalf of another user

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

* fix: refuse operators and detect servers that drop preview on_behalf_of

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

* feat: editor previews run as the configured on_behalf_of identity

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

* fix: probe before submitting, keep step and viewer data identity in previews

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

* fix: never let a job token request viewer data access on a preview

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

* feat: open impersonated preview logs with who they run as and who asked

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-15 10:13:27 +00:00
Ruben FiszelandClaude Opus 5.5 4efd9177ce iterate workspace picker nav items without spreading a NodeList (#11772)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 23:47:46 +02:00
Ruben Fiszelandrubenfiszel 5954a510af chore(main): release 1.835.0 (#11771)
* chore(main): release 1.835.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
v1.835.0
2026-10-14 23:24:35 +02:00
08319a004c feat: allow early return on steps inside branches (#11733)
* feat: allow early return on steps inside a branch to one

The "Early return for sync webhooks" flow setting could only point at a
top-level step. It can now also point at a step inside a branch to one,
in any branch including the default one, and through nested branches to
one.

When the branch is taken, the sync call returns that step's result as
soon as it completes while the rest of the flow keeps running. When it
is not taken, the call returns the flow's final result. The sync wait
loops already resolved nested steps and fell back to the final result,
so they are unchanged.

Worker: check_if_early_return_or_last_in_early_return_parent now
accepts a job whose step id matches early_return at any depth, as long
as every job between it and the root is a branch to one. A loop
iteration or a subflow reusing the same id does not take the stream.
The existing case, the last step of a branch to one that is itself the
early-return step, is unchanged.

Frontend: the native <select> is replaced by EarlyReturnPicker, a
searchable list in flow order where each nested step shows its path
(e.g. `a › Branch 1`). Branch to all and loops inside a branch to one,
and the steps inside them, are not offered: the results lookup cannot
resolve them when nested. Picking a nested step shows a hint that it
only runs if its branch is taken.

* fix: stream the last step when the early return branch is not taken

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

* fix: keep the stream off the last step once the early return step ran

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

* refactor: list early return steps by id only

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

* refactor: use the standard select for the early return step

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

* fix: match the early return step by its flow scope, not its path

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

* fix: keep branch to all and loop steps off the early return stream

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

* feat: allow early return on steps inside a branch to all

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

* fix: resolve a nested branch to all or loop as the early return step

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

* test: pin which step streams for an early return inside branches

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

* fix: return an empty nested loop or branch to all as its early return list

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

* revert: read an empty container's early return status from the root

An empty nested loop or branch to all falls back to the flow's final result again,
so an empty top-level loop that failed keeps its real status.

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

---------

Co-authored-by: stefan <stefan.radovanovic@ip-paris.fr>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 23:19:29 +02:00
GuilhemandClaude Opus 5.5 c1a561f5ec feat: search the workspace picker dropdown past 8 workspaces (#11761)
* feat: add search to the workspace picker dropdown past 8 workspaces

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

* fix: keep focus in workspace search when the menu opens from the keyboard

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

* fix: reach workspace picker actions from the search field by keyboard

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

* fix: ignore IME keys and reset workspace search state only on input

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

* fix: reach the cloud upgrade entry from the workspace search by keyboard

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-14 17:10:25 +00:00
AlexRV12 717162eab4 fix: show native triggers in the operator sidebar (#11769) 2026-10-14 17:10:08 +00:00
AlexRV12 d788f16c40 feat: run global ai eval cases under builder operator profiles (#11768) 2026-10-14 17:09:51 +00:00
GuilhemandClaude Opus 5.5 6a7540792a make RulesetEditor's onClose required so npm run check passes (#11770)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 17:09:35 +00:00
Ruben Fiszelandrubenfiszel e1cab8912c chore(main): release 1.834.0 (#11754)
* chore(main): release 1.834.0

* Apply automatic changes

---------

Co-authored-by: rubenfiszel <275584+rubenfiszel@users.noreply.github.com>
v1.834.0
2026-10-14 15:55:09 +02:00
9653318c17 feat: add a navigation picker after the breadcrumb's last segment (#11649)
* feat: add a navigation picker after the breadcrumb's last segment

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

* fix: open the navigation picker among the current page's siblings

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

* style: size the navigation chevron like the workspace chevron

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

* style: keep one-line picker lists at one-line row height

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

* fix: show the navigation chevron only once the item's path is known

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

* fix: highlight a draft in the navigation picker by its storage path

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

* fix: key the picker's current item on the header path outside editors

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

* feat: count navigation picker picks in feature_usage

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

* feat: shrink the page header in stages and let the bar fold page actions

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

* feat: fold the runs header through the bar and wrap its filter to a second row

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

* feat: truncate the run id and fold run actions into one menu on a narrow bar

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

* feat: keep an item's summary and drop its path on a narrow page header

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

* feat: show the full summary and path read-only when they cannot be edited

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

* feat: keep secondary detail actions in menus and the star beside the summary

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

* feat: show secondary detail actions as buttons while the bar has room for them

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

* chore: update ee-repo-ref to 346bd5417537b76591465e63b9d15bd081e9228c

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

Previous ee-repo-ref: 581b18cac39a4bee2671fd1aa86f91b9e702e8f5

New ee-repo-ref: 346bd5417537b76591465e63b9d15bd081e9228c

Automated by sync-ee-ref workflow.

---------

Co-authored-by: Claude Opus 5.5 (1M context) <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-14 15:51:12 +02:00
GuilhemandClaude Opus 5 74c5f82c67 feat: let operators with manage rights save schedule and trigger drafts (#11646)
* feat: operators get AI sessions

`prefersSessionHandoff` stops taking the role, so every AI entry point an operator
can reach — Ask AI, the home composer, Open in session, the flow editor's hand-off,
the raw-app template picker — opens a session for them like anyone else. The
sessions page drops its refusal, and the layout stops keeping them on the docked
chat.

In the sidebar they now get the Workspace/AI Sessions switch and session mode, and
lose the Ask AI entry that stood in for them, since the pane behind it is no longer
the one they are sent to.

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

* feat: operators get run-oriented examples in the home composer

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

* docs: note builder_flows in the operator composer examples comment

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

* feat: gate session tools and editors on operator rights

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

* feat: keep operator AI sessions behind a browser opt-in

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

* fix: keep flows refused in the prompt for operators without builder rights

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

* refactor: decide every frontend edit check through one editRights module

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

* fix: let admins who are also operators open session editors, as drafts.rs does

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

* feat: let operators with manage rights save schedule and trigger drafts

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

* fix: keep rebase_draft from operators who can only draft schedules and triggers

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

* fix: list operators' schedule and trigger drafts under their draft rights

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

* docs: say which drafts write_draft gates now that schedules and triggers have their own

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

---------

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-14 15:50:31 +02:00
hugocasaandClaude Opus 5.5 247202c1c5 oauth: add ms_onedrive, ms_sharepoint and ms_excel providers (#11735)
* oauth: add onedrive, sharepoint and microsoft_excel providers

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

* oauth: rename microsoft_excel provider to excel, add msword icon

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

* oauth: rename providers to msonedrive, mssharepoint, msexcel

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

* oauth: use underscore slugs ms_onedrive, ms_sharepoint, ms_excel, ms_word

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 15:49:29 +02:00
GuilhemandClaude Opus 5.5 a0e0fde52c align the protection rule drawer with the drawer guidelines (#11752)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-14 15:49:06 +02:00
AlexRV12 c5e6f67d53 feat: give full-code app previews the deployed app's window.ctx (#11763)
* feat: give full-code app previews the deployed app's window.ctx

* chore: pin the UI Builder build that sets window.ctx in the preview

* fix: hold the editor preview until the viewer belongs to the app's workspace

* fix: let Rebuild retry a failed viewer lookup in the editor preview
2026-10-14 15:47:21 +02:00
Ruben FiszelandClaude Opus 5.5 468cf1d994 feat: read and change workspace settings from ai sessions and mcp (#11741)
* feat: read and change workspace settings from ai sessions and mcp

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

* docs: cover wmill workspace settings commands in the settings guidance

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

* docs: say unknown settings keys are warned and ee-only ones refused

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

* docs: cover datatable_permissions and protection_rules in the settings guidance

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:06:26 +00:00
hugocasaandClaude Opus 5.5 a2ee052e03 fix(cli): keep script run waiting on long jobs and flaky log streaming (#11766)
* fix(cli): keep script run waiting on long jobs and flaky log streaming

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

* fix(cli): back off job result polling after an error

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

* fix(cli): keep skipped jobs successful and color early completions

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

* fix(cli): fall back to the polled result when the final job fetch fails

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

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:04:01 +00:00
Ruben FiszelandClaude Opus 5.5 cd7813e354 refuse data table tenants that name nobody and report every error at once (#11767)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 13:01:59 +00:00