From 11dcef36df689c4bdbd14cfefc91279c5ff4cba4 Mon Sep 17 00:00:00 2001 From: Marc Littlemore Date: Fri, 8 Aug 2025 16:51:39 +0100 Subject: [PATCH] feat(core): Add workflow diffs feature to license checks (no-changelog) (#18130) --- packages/@n8n/api-types/src/frontend-settings.ts | 1 + packages/@n8n/backend-common/src/license-state.ts | 4 ++++ packages/@n8n/constants/src/index.ts | 1 + packages/cli/src/controllers/e2e.controller.ts | 1 + packages/cli/src/services/frontend.service.ts | 2 ++ packages/frontend/editor-ui/src/__tests__/defaults.ts | 1 + packages/frontend/editor-ui/src/__tests__/mocks.ts | 1 + 7 files changed, 11 insertions(+) diff --git a/packages/@n8n/api-types/src/frontend-settings.ts b/packages/@n8n/api-types/src/frontend-settings.ts index 500168ba24..fb37b7c28b 100644 --- a/packages/@n8n/api-types/src/frontend-settings.ts +++ b/packages/@n8n/api-types/src/frontend-settings.ts @@ -153,6 +153,7 @@ export interface FrontendSettings { workerView: boolean; advancedPermissions: boolean; apiKeyScopes: boolean; + workflowDiffs: boolean; projects: { team: { limit: number; diff --git a/packages/@n8n/backend-common/src/license-state.ts b/packages/@n8n/backend-common/src/license-state.ts index 85e021f06d..76a2ae904a 100644 --- a/packages/@n8n/backend-common/src/license-state.ts +++ b/packages/@n8n/backend-common/src/license-state.ts @@ -159,6 +159,10 @@ export class LicenseState { return this.isLicensed('feat:insights:viewHourlyData'); } + isWorkflowDiffsLicensed() { + return this.isLicensed('feat:workflowDiffs'); + } + // -------------------- // integers // -------------------- diff --git a/packages/@n8n/constants/src/index.ts b/packages/@n8n/constants/src/index.ts index feb818e6e0..1042c57523 100644 --- a/packages/@n8n/constants/src/index.ts +++ b/packages/@n8n/constants/src/index.ts @@ -35,6 +35,7 @@ export const LICENSE_FEATURES = { INSIGHTS_VIEW_DASHBOARD: 'feat:insights:viewDashboard', INSIGHTS_VIEW_HOURLY_DATA: 'feat:insights:viewHourlyData', API_KEY_SCOPES: 'feat:apiKeyScopes', + WORKFLOW_DIFFS: 'feat:workflowDiffs', } as const; export const LICENSE_QUOTAS = { diff --git a/packages/cli/src/controllers/e2e.controller.ts b/packages/cli/src/controllers/e2e.controller.ts index 6a7a91421c..0ebe4cffb1 100644 --- a/packages/cli/src/controllers/e2e.controller.ts +++ b/packages/cli/src/controllers/e2e.controller.ts @@ -108,6 +108,7 @@ export class E2EController { [LICENSE_FEATURES.API_KEY_SCOPES]: false, [LICENSE_FEATURES.OIDC]: false, [LICENSE_FEATURES.MFA_ENFORCEMENT]: false, + [LICENSE_FEATURES.WORKFLOW_DIFFS]: false, }; private static readonly numericFeaturesDefaults: Record = { diff --git a/packages/cli/src/services/frontend.service.ts b/packages/cli/src/services/frontend.service.ts index 6209b97165..cb0fff329f 100644 --- a/packages/cli/src/services/frontend.service.ts +++ b/packages/cli/src/services/frontend.service.ts @@ -228,6 +228,7 @@ export class FrontendService { workerView: false, advancedPermissions: false, apiKeyScopes: false, + workflowDiffs: false, projects: { team: { limit: 0, @@ -356,6 +357,7 @@ export class FrontendService { workerView: this.license.isWorkerViewLicensed(), advancedPermissions: this.license.isAdvancedPermissionsLicensed(), apiKeyScopes: this.license.isApiKeyScopesEnabled(), + workflowDiffs: this.licenseState.isWorkflowDiffsLicensed(), }); if (this.license.isLdapEnabled()) { diff --git a/packages/frontend/editor-ui/src/__tests__/defaults.ts b/packages/frontend/editor-ui/src/__tests__/defaults.ts index ed5bdb6982..8cb572e313 100644 --- a/packages/frontend/editor-ui/src/__tests__/defaults.ts +++ b/packages/frontend/editor-ui/src/__tests__/defaults.ts @@ -40,6 +40,7 @@ export const defaultSettings: FrontendSettings = { workerView: false, advancedPermissions: false, apiKeyScopes: false, + workflowDiffs: false, projects: { team: { limit: 1, diff --git a/packages/frontend/editor-ui/src/__tests__/mocks.ts b/packages/frontend/editor-ui/src/__tests__/mocks.ts index 64078721f2..0d86bf435c 100644 --- a/packages/frontend/editor-ui/src/__tests__/mocks.ts +++ b/packages/frontend/editor-ui/src/__tests__/mocks.ts @@ -245,6 +245,7 @@ export function createMockEnterpriseSettings( workerView: false, advancedPermissions: false, apiKeyScopes: false, + workflowDiffs: false, projects: { team: { limit: 0,