- The migration recovers a service's connection when the workspace row lost its path,
which saving the OAuth app or an abandoned instance connect used to do.
- A trigger created without a connection uses the shared account, as older clients and
trigger specs expect.
- Only whoever connected a path, or an admin, may reconnect over it.
- Removing a service or sharing an account checks a path-scoped token against what it touches.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The shared account is a regular form field, Nextcloud shows an alert while no
admin account is shared, a non-admin Nextcloud account gets a message saying why
it cannot create triggers, and the OAuth dialog only accepts a full server URL.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Nextcloud, whose webhooks need an admin account, offers connecting and sharing one
directly instead.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
App actions move into a menu, the card body holds only the shared account, and
service descriptions name what fires the trigger.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Edit and Remove sit on the workspace OAuth app row, and the workspace connection
reads as part of the same section.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The card states once which OAuth app is in use, with a single Configure action,
and the form follows the design system.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Remove now only appears with a workspace OAuth app, since a workspace using the
instance app has nothing of its own to remove.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
An admin can already read every connection, so restricting sharing to their own
added nothing. Removing a service now takes each connection's lock and keeps
everything if a trigger was created meanwhile.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Members can use the shared connection without reading its token. It reuses
workspace_integrations.resource_path, so existing workspace connections stay
usable by members after upgrading.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
createAccount takes the variable and the store creates both in one
transaction, so a connect is either fully saved or not at all. The connect
flows make that single call instead of creating the variable and linking it
afterwards.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Deleting a variable also deletes the resource at its path, so the rollback
is skipped when filling an existing resource.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The variable endpoints no longer take an account link from the caller. The connect
flows create the token variable first and pass its path to create_account, which
links it server-side. This replaces the creator check and the created_by
bookkeeping, along with both migrations.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* 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
* 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>
* 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>
* 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>
* 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>
* 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>
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>