* 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>
* fix: fold embedded detail headers, refresh stale fold widths, keep the path beside a summary placeholder
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* fix: drop the duplicate path on read-only detail pages and re-measure folded actions when they change
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* fix: re-measure the runs header when its hidden counters change width
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* revert: drop the runs header's counter version, the badges do not change its width
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* fix: stop the header re-measuring its actions every frame while idle
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* fix: encrypt ai session backups with aes-256-gcm
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* test: cover ai session backups written with aes-256-gcm
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* fix: name the release ai session readers ship in
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* fix: hold ai session gcm writes until old servers are rolled out
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* oauth: rename outlook provider to msoutlook
Microsoft 365 products are ms<product> (msteams, msoutlook). Renames the
oauth_connect.json key and the icon map key.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* oauth: use ms_outlook, not msoutlook
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix: show the email handler's SMTP status to non-superadmin workspace admins
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep the SMTP status check out of the not-configured warning
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix: widen variable.value only once every process can recover from it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: wait out the previous release's servers before widening variable.value
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: write a v2 secret too long for the narrow column in cbc until it is widened
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix: serve s3 proxy objects with nosniff and a sandbox csp
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* test: assert s3 proxy error responses carry nosniff and the sandbox csp
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* chore: update ee-repo-ref to 196abc042c691ea16280ee10b89fb3b2fd527236
This commit updates the EE repository reference after PR #876 was merged in windmill-ee-private.
Previous ee-repo-ref: 25feaf41aa84d47f8e4adb4def2576b443a66374
New ee-repo-ref: 196abc042c691ea16280ee10b89fb3b2fd527236
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>
* feat: pin the default python version of an instance at initialization
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: detect a new instance from the schema it created, not from its age
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: record the python baseline on the migration connection
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* refactor: record the instance python version in the setting itself
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: start new instances on python 3.15
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep the forced python version ahead of the stored one when a worker reads it late
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: start new instances on python 3.14 rather than 3.15
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: start new instances on python 3.13
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to 06610ecc950ed64a2709d7f1aa8c7b49a95fdbae
This commit updates the EE repository reference after PR #869 was merged in windmill-ee-private.
Previous ee-repo-ref: 599eae0034b34c5e0d3d42df37cf18bbe01f9b49
New ee-repo-ref: 06610ecc950ed64a2709d7f1aa8c7b49a95fdbae
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>
* chore: pass --system-certs to uv instead of the deprecated --native-tls
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to 06610ecc950ed64a2709d7f1aa8c7b49a95fdbae
This commit updates the EE repository reference after PR #869 was merged in windmill-ee-private.
Previous ee-repo-ref: 599eae0034b34c5e0d3d42df37cf18bbe01f9b49
New ee-repo-ref: 06610ecc950ed64a2709d7f1aa8c7b49a95fdbae
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>
* chore: update ee ref
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to 118785eaa78675089b9a676d24e5d0a2e03f3d9a
This commit updates the EE repository reference after PR #875 was merged in windmill-ee-private.
Previous ee-repo-ref: e8df378c5f8e5e07af8a2bad4c685c8ad6fe1491
New ee-repo-ref: 118785eaa78675089b9a676d24e5d0a2e03f3d9a
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>
* fix(cli): count superadmins as able to preserve ownership on push
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011BzU9zd53JsTShCsbKzYzB
* fix: resolve variables in the url and headers of an mcp resource
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep resolved mcp secrets out of header warnings and userinfo urls
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: drop the url from mcp client errors before rmcp logs them
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: run rmcp's reqwest client without a log subscriber
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: scrub the request target from mcp error bodies
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: drop server error bodies from mcp transport errors
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: fail closed when an mcp error message has no status prefix
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* oauth: add outlook (Microsoft Graph) provider
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* oauth: outlook defaults cover mail, calendar and contacts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
* fix: bump git sync hub scripts to cli 1.830.0
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011BzU9zd53JsTShCsbKzYzB
* fix: surface oauth provider errors returned with http 200
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: show the unavailable sign-in option in the oauth resource form
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: name the oauth grant in both authentication card descriptions
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to 0a7c28718872bb5cd624d77e32ad7d75c6ce42de
This commit updates the EE repository reference after PR #874 was merged in windmill-ee-private.
Previous ee-repo-ref: 11425053010c3cd4670bc06f3606fa18cccc2091
New ee-repo-ref: 0a7c28718872bb5cd624d77e32ad7d75c6ce42de
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>
* oauth: add hubspot provider
Registry entry (authorize + token URL, body credentials, least-privilege
default scopes, labelled scope_options) and the admin OAuth tile.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* oauth: send hubspot non-default scopes as optional_scope
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix: let clicks through the floating sidebar's outside layer
The undocked sidebar's outside-click layer swallowed the click that
dismissed it, so a page button under it needed two clicks. Dismiss on a
page pointerdown instead and let the press reach its target; close on
Esc; make the header handle toggle.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* fix: leave the floating sidebar open on an Esc an overlay claims
Esc now waits for a drawer or menu to claim the key, skips while an
overlay is on the viewport stack, ignores hidden menus, and returns
focus to the handle. The hover-then-click grace on the handle is now
time-bound, so a stale hover never swallows a later toggle.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* fix: pin the floating sidebar from its handle
A click on the handle pins the card, so it no longer slides away when
the pointer leaves; the handle shows as selected while pinned. Another
click on the handle, a press on the page, Esc or a navigation closes
it. Hover still previews it unpinned. This replaces the one-second
window that ignored a click right after a hover.
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: give app builder operators app tools in AI sessions
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: start builders' session apps from the builder starter
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* docs: note the session app editor conforms builder app policies
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix: recheck app read access on every publisher-mode component run
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test: pin that app read grants and revocations apply to the next run
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: cache only app permit grants, for 60s, instead of rechecking every run
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix: count in-process preview pages in the ai evals active-preview resolver
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* refactor: share the page-slot predicate between the session and eval resolvers
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* refactor: mount the runs list in process in ai session previews
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: tell runs list tabs apart by filters and reseed on re-point
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: remount a hosted runs list only when moved from outside
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* feat: data table migration tools and role guidance in ai sessions
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: shared data table guidance and safer migration tool failures
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep a migration that fails to apply and let the session rewrite it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: rewrite only a pending migration and qualify fork isolation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* refactor: mount the run page in process in ai session previews
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: let run again fire repeatedly and re-pin an open script tab
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep a run opened through a share link in its own frame
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* chore: bump frontend python parser wasm packages to 1.830.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: bump cli python parser wasm packages to 1.830.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep the app editor's parent_version out of deployed apps
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: drop parent_version when deploying an app draft
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* feat: connect to a data table with every role of the job's viewer
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: key a cached result by the run's recorded viewer
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test: pin the per-viewer cache key and fix a stale doc sentence
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: length-prefix the viewer in the result cache key
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: drop data table role set logins unused for 30 days
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: pin the ee ref with the set login sweep fixes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: pin the ee ref with the sweep retry fix
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test: give the cache key test its own migrated database
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: add the viewer's roles to a data table connection that names none
The default role of a data table under roles is now a floor: a connection
naming no role also holds the roles its viewer is a tenant of, unless the
default is admin. This replaces the explicit as=viewer option, which is
removed from the reference parser, the executors and both clients. The roles
drawer warns while the default is admin and confirms before removing the
default role.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: let a data table have no default role
A connection naming no role then holds its viewer's roles only and is
refused without any. The roles drawer offers the choice, states what an
unnamed connection gets for the current settings, says who gets admin while
it is the default, and notes who owns a table created over several roles.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: start a data table's roles with admin open to everyone
Turning roles on from the drawer seeded admin with no tenant, which refused
every non-admin member's job as soon as it was saved. It now starts open to
everyone, so the toggle changes nothing until the roles are edited, and the
drawer warns for as long as everyone can connect as admin.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to 40ab35596e6fcb82a4dfc56e186befb807f8e2af
This commit updates the EE repository reference after PR #873 was merged in windmill-ee-private.
Previous ee-repo-ref: a5def184a29fffab8ed42c70c5a7445b2b3cbe98
New ee-repo-ref: 40ab35596e6fcb82a4dfc56e186befb807f8e2af
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>
* chore: publish the chat sdk as @windmill-labs/chat-sdk
* chore: publish the chat sdk with a dedicated npm token
* chore: publish the chat sdk with npm trusted publishing
* feat: encrypt workspace secrets with AES-256-GCM
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* docs: note the aead gate covers workers only and is one-way
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* fix: skip secrets the upgrade cannot store and clear its guard on panic
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* fix: start aead secret writes one release after read support
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* chore: update ee-repo-ref to 06610ecc950ed64a2709d7f1aa8c7b49a95fdbae
This commit updates the EE repository reference after PR #869 was merged in windmill-ee-private.
Previous ee-repo-ref: 599eae0034b34c5e0d3d42df37cf18bbe01f9b49
New ee-repo-ref: 06610ecc950ed64a2709d7f1aa8c7b49a95fdbae
Automated by sync-ee-ref workflow.
* feat: widen variable.value to fit AES-GCM ciphertext of the longest legacy secret
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* fix: refuse legacy secrets longer than 15000 chars so every secret can be upgraded
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* fix: cap legacy secrets at 15000 chars with a check constraint so every writer is covered
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
---------
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>
* fix(groups): recompute member roles when an instance group role is cleared
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: restore sqlx cache entry still used by the scim group delete
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>