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.
+
+
+
+You can also use **Reassign** to transfer ownership without removing the user — useful when moving personal scripts into shared folders.
+
+
+
+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.
+
+
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: {