diff --git a/changelog/2026-04-13-ci-test-scripts/index.md b/changelog/2026-04-13-ci-test-scripts/index.md new file mode 100644 index 000000000..f9369f461 --- /dev/null +++ b/changelog/2026-04-13-ci-test-scripts/index.md @@ -0,0 +1,16 @@ +--- +slug: ci-test-scripts +title: Automatically test scripts and flows on deploy +tags: ['Scripts', 'Flows'] +description: Write test scripts that run automatically every time the script or flow they cover is deployed. +version: v1.681.0 +features: + [ + 'Add a "// test: script/path" annotation to turn any script into a test for another script or flow', + 'Tests run automatically every time the target is deployed', + 'Results (pass/fail/running) shown on script and flow detail pages', + 'CI badges and summary on workspace fork comparison page', + 'Built-in test templates for TypeScript and Python' + ] +docs: /docs/advanced/ci_tests +--- diff --git a/changelog/2026-04-13-user-offboarding/index.md b/changelog/2026-04-13-user-offboarding/index.md new file mode 100644 index 000000000..3ec3523eb --- /dev/null +++ b/changelog/2026-04-13-user-offboarding/index.md @@ -0,0 +1,16 @@ +--- +slug: user-offboarding +title: Reassign a user's items when removing them +tags: ['User management'] +description: When removing a user, reassign all their scripts, flows, apps, resources, schedules, and triggers to another user or folder so nothing breaks. +version: v1.681.0 +features: + [ + 'Preview everything owned by the user before taking action', + 'Reassign all items to another user or folder in one step', + 'Reassign-only mode to transfer ownership without removing the user', + 'Conflicts are detected and blocked before anything is moved', + 'Instance-level offboarding across all workspaces from superadmin settings' + ] +docs: /docs/core_concepts/roles_and_permissions#user-offboarding +--- diff --git a/docs/advanced/12_deploy_to_prod/index.mdx b/docs/advanced/12_deploy_to_prod/index.mdx index 1e9280886..4d6b5b816 100644 --- a/docs/advanced/12_deploy_to_prod/index.mdx +++ b/docs/advanced/12_deploy_to_prod/index.mdx @@ -54,3 +54,15 @@ More details at: href="/docs/core_concepts/staging_prod" /> + +## CI test scripts + +You can attach test scripts to any [script](../../script_editor/index.mdx) or [flow](../../flows/1_flow_editor.mdx) so they run automatically on each deployment, catching regressions before they reach production. + +
+ +
diff --git a/docs/advanced/20_workspace_forks/index.mdx b/docs/advanced/20_workspace_forks/index.mdx index df146115e..d0f1902f9 100644 --- a/docs/advanced/20_workspace_forks/index.mdx +++ b/docs/advanced/20_workspace_forks/index.mdx @@ -163,6 +163,14 @@ When git sync is properly setup, the workspace is synchronized with one of the b description="Deploy to prod using a staging workspace" href="/docs/advanced/deploy_to_prod" /> + + + +
+ + +
diff --git a/docs/core_concepts/16_roles_and_permissions/global_offboard.png b/docs/core_concepts/16_roles_and_permissions/global_offboard.png new file mode 100644 index 000000000..7fe6ca0d3 Binary files /dev/null and b/docs/core_concepts/16_roles_and_permissions/global_offboard.png differ diff --git a/docs/core_concepts/16_roles_and_permissions/index.mdx b/docs/core_concepts/16_roles_and_permissions/index.mdx index 7a131c8df..930531e74 100644 --- a/docs/core_concepts/16_roles_and_permissions/index.mdx +++ b/docs/core_concepts/16_roles_and_permissions/index.mdx @@ -212,3 +212,23 @@ Combined with the ["run on behalf of" selector during deployments](../12_staging href="/docs/core_concepts/staging_prod" /> + +## User offboarding + +When removing a user, you can reassign all their items to another user or [folder](../8_groups_and_folders/index.mdx#folders) so that [schedules](../1_scheduling/index.mdx), [triggers](../../getting_started/8_triggers/index.mdx), and everything else keeps working. + +From **Workspace settings** > **Users**, click **Remove** on a user. The modal shows what they own, what runs on their behalf, and what references their paths. Pick a target user or folder, confirm, and everything is moved in one step. + +![Offboard user](./offboard_user.png 'Offboard user') + +You can also use **Reassign** to transfer ownership without removing the user — useful when moving personal scripts into shared folders. + +![Reassign user items](./reassign_user_items.png 'Reassign user items') + +If the target already has items at the same paths, the operation is blocked until you resolve the conflicts. + +### Instance-level offboarding + +[Superadmins](#superadmin) can offboard a user across all workspaces at once from **Instance settings** > **Users**, with a different reassignment target per workspace. + +![Global offboard](./global_offboard.png 'Reassign user items globally') diff --git a/docs/core_concepts/16_roles_and_permissions/offboard_user.png b/docs/core_concepts/16_roles_and_permissions/offboard_user.png new file mode 100644 index 000000000..90ecc3ded Binary files /dev/null and b/docs/core_concepts/16_roles_and_permissions/offboard_user.png differ diff --git a/docs/core_concepts/16_roles_and_permissions/reassign_user_items.png b/docs/core_concepts/16_roles_and_permissions/reassign_user_items.png new file mode 100644 index 000000000..ecce9f23b Binary files /dev/null and b/docs/core_concepts/16_roles_and_permissions/reassign_user_items.png differ diff --git a/docs/core_concepts/44_workspace_settings/index.mdx b/docs/core_concepts/44_workspace_settings/index.mdx index 4f5308c9a..a6cac38c7 100644 --- a/docs/core_concepts/44_workspace_settings/index.mdx +++ b/docs/core_concepts/44_workspace_settings/index.mdx @@ -8,7 +8,7 @@ Workspace settings are configuration options specific to each workspace and can Each workspace can be configured through the following sections: -- [Users](../16_roles_and_permissions/index.mdx) - Manage workspace members and their permissions, in particular the operator visibility settings +- [Users](../16_roles_and_permissions/index.mdx) - Manage workspace members, permissions, operator visibility, and [offboarding](../16_roles_and_permissions/index.mdx#user-offboarding) - [Git Sync](../../advanced/11_git_sync/index.mdx) - Configure Git synchronization for your workspace - [Deployment UI](../12_staging_prod/index.md) - Customize the deployment interface - [Protection Rulesets](../56_protection_rulesets/index.mdx) - Enforce governance policies on workspace changes diff --git a/sidebars.js b/sidebars.js index 3e550f3ce..0a953f3f2 100644 --- a/sidebars.js +++ b/sidebars.js @@ -1019,6 +1019,7 @@ const sidebars = { 'advanced/deploy_gh_gl/index', 'core_concepts/staging_prod/index', 'core_concepts/protection_rulesets/index', + 'advanced/ci_tests/index', { type: 'doc', id: 'advanced/canonical_deployment_setups/index', diff --git a/src/components/pricing/FeatureList.js b/src/components/pricing/FeatureList.js index 8f4baca78..47042103c 100644 --- a/src/components/pricing/FeatureList.js +++ b/src/components/pricing/FeatureList.js @@ -499,6 +499,17 @@ export const sections = [ }, link: '/docs/core_concepts/staging_prod' }, + { + name: 'CI test scripts with auto-trigger on deploy', + tiers: { + 'tier-free-selfhost': true, + 'tier-enterprise-selfhost': true, + 'tier-enterprise-cloud': true, + 'tier-free': true, + 'tier-team': true + }, + link: '/docs/advanced/ci_tests' + }, { name: 'OpenID Connect (OIDC)', tiers: {