Diego Imbert
37925d110c
Merge remote-tracking branch 'origin/fork-database-authorization' into datatable-external-instance-2
2026-09-18 15:01:24 +02:00
Diego Imbert and Claude Opus 5
5aa09bc871
chore: drop the unused json import from the settings crate
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-18 15:01:17 +02:00
Diego Imbert
b8060cdd41
Merge commit '45e24e509862ecbd87ad9ab7d90910f9a5a163ad' into HEAD
...
# Conflicts:
# backend/windmill-api-workspaces/src/workspaces.rs
# backend/windmill-api-workspaces/src/workspaces_extra.rs
2026-09-18 14:05:12 +02:00
Diego Imbert
45e24e5098
Merge remote-tracking branch 'origin/fork-database-authorization' into HEAD
2026-09-18 14:04:12 +02:00
Diego Imbert and Claude Opus 5
fc29b54ae6
fix(datatables): check the external cluster setting on its own transaction, and gate the registry probe
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-18 13:58:58 +02:00
Diego Imbert and Claude Opus 5
92c044af6a
fix(datatables): hold the fork lock across a fork import, and carry the reservation inside the setup write
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-18 13:57:18 +02:00
Diego Imbert and Claude Opus 5
0f7cadb19c
fix(datatables): keep fork reservations private, drop a cleaned-up entry with its database, and serialize cleanup with settings saves
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-18 01:11:43 +02:00
Diego Imbert and Claude Opus 5
8c554ef133
fix(datatables): take the fork data table lock once, before the external cluster's
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-18 01:00:06 +02:00
Diego Imbert
cdd681c029
Merge commit '154bade187169ec5c403d300a160556b768a0ead' into HEAD
2026-09-18 00:58:35 +02:00
Diego Imbert
154bade187
Merge remote-tracking branch 'origin/fork-database-authorization' into HEAD
2026-09-18 00:58:33 +02:00
Diego Imbert and Claude Opus 5
e550374f06
fix(datatables): migrate fork reservations on workspace rename, and lock the parent's data tables for the whole fork
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-18 00:58:19 +02:00
Diego Imbert and Claude Opus 5
addd77eaf4
fix(datatables): create external databases only on a cluster setup succeeded on, and document the registry reader
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-17 18:43:49 +02:00
Diego Imbert
7f5628e775
Merge commit 'eab084b36fe14ecee3ecc9a78fb079760de133b9' into HEAD
...
# Conflicts:
# backend/windmill-common/src/lib.rs
2026-09-17 18:43:49 +02:00
Diego Imbert
eab084b36f
Merge remote-tracking branch 'origin/fork-database-authorization' into HEAD
2026-09-17 18:41:27 +02:00
Diego Imbert and Claude Opus 5
4cba79b7f0
fix(datatables): authenticate instance database setup before writing its status, and keep a fork reservation across it
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-17 18:41:11 +02:00
Diego Imbert
76a10f8ee8
Merge commit 'c9e2246e1c2480135884c9b3dcace11da0907dba' into HEAD
...
# Conflicts:
# backend/windmill-api-workspaces/src/workspaces.rs
# backend/windmill-api-workspaces/src/workspaces_extra.rs
2026-09-17 18:21:18 +02:00
Diego Imbert
c9e2246e1c
Merge remote-tracking branch 'origin/fork-database-authorization' into HEAD
2026-09-17 18:17:06 +02:00
Diego Imbert and Claude Opus 5
b68768084e
fix(datatables): bind fork database copies to their workspace, and count every use before dropping one
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-17 18:16:48 +02:00
Diego Imbert and Claude Opus 5
7c16d482fd
fix(datatables): refuse fork cleanup of an external database another workspace uses
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-17 16:34:14 +02:00
Diego Imbert and Claude Opus 5
5ddaee5b78
fix(datatables): write the external cluster setting under the lifecycle lock, and check fork targets are registered
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-17 16:04:18 +02:00
Diego Imbert and Claude Opus 5
3981b2eb1b
fix(datatables): refuse repointing the external cluster while it is in use, and keep verify-ca working for pg_dump
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-17 15:28:31 +02:00
Diego Imbert
a928253af0
Merge remote-tracking branch 'origin/datatable-roles-redesign-part-2' into datatable-roles-redesign-part-4
...
# Conflicts:
# backend/windmill-common/src/workspaces.rs
2026-09-17 15:22:45 +02:00
Diego Imbert
5d8f031cf6
Merge branch 'datatable-roles-redesign' into datatable-roles-redesign-part-2
2026-09-17 15:22:26 +02:00
Diego Imbert and Claude Opus 5
8a7f364cfe
fix(datatables): hold the parent's settings while a fork points at its data tables
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-17 13:29:35 +02:00
Diego Imbert and Claude Opus 5
ee176e24d5
perf(datatables): resolve a workspace's data tables per pointer hop, not per entry
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-17 13:04:26 +02:00
Diego Imbert and Claude Opus 5
4bdc5a9e20
fix(datatables): drop a DuckDB data table secret once its ATTACH has used it
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-17 12:17:30 +02:00
Diego Imbert and Claude Opus 5
9b0046d867
docs(datatables): state the authorization contract of external database usage lookups
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-17 11:50:10 +02:00
Diego Imbert
1f78ce77f5
Merge commit 'dbe0230f483bbe10aeca055c4d39506fea41459d' into HEAD
...
# Conflicts:
# backend/ee-repo-ref.txt
2026-09-17 11:50:00 +02:00
Diego Imbert and Claude Opus 5
dbe0230f48
fix(datatables): never grant CREATEROLE to custom_instance_user on the external cluster
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-17 11:49:20 +02:00
Diego Imbert
ced4913b33
Merge commit 'b3a3f1cf5a0e6f97af2679c8abf640c6b832d7db' into datatable-external-instance-2
...
# Conflicts:
# backend/ee-repo-ref.txt
2026-09-17 11:34:32 +02:00
Diego Imbert
b3a3f1cf5a
Merge remote-tracking branch 'origin/datatable-roles-redesign-part-4' into HEAD
...
# Conflicts:
# backend/ee-repo-ref.txt
2026-09-17 11:34:28 +02:00
Diego Imbert
92e51f19aa
Merge remote-tracking branch 'origin/datatable-roles-redesign-part-2' into datatable-roles-redesign-part-4
...
# Conflicts:
# backend/ee-repo-ref.txt
# backend/windmill-api-integration-tests/tests/datatable_roles.rs
# backend/windmill-api-workspaces/src/datatable_permissions_oss.rs
# backend/windmill-api-workspaces/src/workspaces.rs
# backend/windmill-common/src/datatable_roles_oss.rs
# backend/windmill-common/src/workspaces.rs
# frontend/src/lib/components/datatableAcl/PgAclEditor.svelte
# frontend/src/lib/components/workspaceSettings/DataTablePermissionsButton.svelte
# frontend/src/lib/components/workspaceSettings/DataTableRolesSection.svelte
# frontend/src/lib/components/workspaceSettings/DataTableSettings.svelte
# frontend/src/lib/components/workspaceSettings/InstanceRolesButton.svelte
2026-09-17 10:03:05 +02:00
Diego Imbert and Claude Opus 5
36532c35d8
fix: check ACL read reach against the entry it connects from
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01BRoYE5ZeAVvrDYdfhDAYXb
2026-09-17 10:01:19 +02:00
Diego Imbert and Claude Opus 5
79481a2f02
fix: build the ACL connection from the authorized data table entry
...
Resolving the settings again could land on a resource with the same
database name on another server, which the later entry checks never see.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01BRoYE5ZeAVvrDYdfhDAYXb
2026-09-17 10:01:19 +02:00
Diego Imbert and Claude Opus 5
c884597e56
fix: hold the ACL connection to the database that was authorized
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01BRoYE5ZeAVvrDYdfhDAYXb
2026-09-17 10:01:19 +02:00
Diego Imbert and Claude Opus 5
115448d3d1
fix: run one data table ACL apply at a time per server before it connects
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01BRoYE5ZeAVvrDYdfhDAYXb
2026-09-17 10:01:19 +02:00
Diego Imbert and Claude Opus 5
1ece278fd2
fix: add only missing grant options before an ACL apply, never default privileges
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01BRoYE5ZeAVvrDYdfhDAYXb
2026-09-17 10:01:19 +02:00
Diego Imbert and Claude Opus 5
7819d48df9
fix: refresh grant options only after the ACL apply validates its plan
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01BRoYE5ZeAVvrDYdfhDAYXb
2026-09-17 10:01:19 +02:00
Diego Imbert and Claude Opus 5
ce1f720d85
fix: take every pooled connection before the ACL apply locks
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01BRoYE5ZeAVvrDYdfhDAYXb
2026-09-17 10:01:19 +02:00
Diego Imbert and Claude Opus 5
93d346e54b
feat(datatables): add an ACL editor for data table roles
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-17 10:01:19 +02:00
Diego Imbert and Claude Opus 5
9378828472
docs(datatables): note that legacy names with ? cannot be migrated
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-17 10:01:15 +02:00
Diego Imbert and Claude Opus 5
79bb761c5d
fix(datatables): serialize roles going on with aliases saved from other workspaces
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-17 10:01:15 +02:00
Diego Imbert and Claude Opus 5
d191cfe4eb
fix(datatables): let CE migrations connect as an explicitly named admin
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-17 10:01:15 +02:00
Diego Imbert and Claude Opus 5
31b5b0a062
fix(datatables): refuse roles while a same-workspace alias reaches the database
...
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
2026-09-17 10:01:15 +02:00
windmill-internal-app[bot]
d1c2f801f4
chore: update ee-repo-ref to a1873dbb67f2302b85ff5362f8387b48eccdb607
...
This commit updates the EE repository reference after PR #783 was merged in windmill-ee-private.
Previous ee-repo-ref: 5c853e2c20eca6b748415fc0d6862a6ebfb5fec4
New ee-repo-ref: a1873dbb67f2302b85ff5362f8387b48eccdb607
Automated by sync-ee-ref workflow.
2026-09-17 10:01:15 +02:00
Diego Imbert and Claude Opus 5
d3ee67c9bc
test(datatables): run the tenant matcher test on the enterprise edition
...
The matcher it covers is enterprise code now, so without the enterprise
edition the test hit the stub and failed the default windmill-common run. It
runs with private and enterprise, and a counterpart without them asserts that
no tenant list covers anyone, the wildcard and a workspace admin included.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01BjfMkJyKzodxkobqGZ6Lqb
2026-09-17 10:01:15 +02:00
Diego Imbert and Claude Opus 5
eafc551651
feat(datatables): gate the roles UI mount sites on an enterprise license
...
Both mount sites are still commented out; the gate travels with them.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01BjfMkJyKzodxkobqGZ6Lqb
2026-09-17 10:01:15 +02:00
Diego Imbert and Claude Opus 5
db05c8b7c9
test(datatables): run the roles tests on the enterprise edition, refusals without it
...
Each test that exercises roles runs with private and enterprise. Two tests run
without them: every roles route answers the Enterprise refusal, and a data
table saved under roles, or a named role, is refused a connection while one
not under roles resolves as before.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01BjfMkJyKzodxkobqGZ6Lqb
2026-09-17 10:01:15 +02:00
Diego Imbert and Claude Opus 5
11ba3cd477
feat(datatables): move the data table role catalog endpoints to the enterprise edition
...
The superadmin list, create, update and delete handlers move to
windmill-ee-private. The routes stay registered and, without the enterprise
edition, refuse after authentication.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01BjfMkJyKzodxkobqGZ6Lqb
2026-09-17 10:01:15 +02:00
Diego Imbert and Claude Opus 5
7ae3335f03
feat(datatables): move the data table permissions endpoints to the enterprise edition
...
The permissions read, save and usable-roles handlers move to
windmill-ee-private; the routes stay registered and, without the enterprise
edition, answer that data table roles are an Enterprise Edition feature.
ensure_governs_datatable and ensure_reaches_datatable keep their paths: the
first refuses, the second passes a data table not under roles.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01BjfMkJyKzodxkobqGZ6Lqb
2026-09-17 10:01:15 +02:00