From 4eb8842f964e374f41feb20924b840599be09189 Mon Sep 17 00:00:00 2001 From: harsh mahajan Date: Fri, 29 May 2026 23:11:31 +0530 Subject: [PATCH 1/2] fix: restrict granular project roles to Scale plan only The feature was incorrectly available to Pro plan orgs. Added \`\$currentPlan?.group === 'scale'\` guard alongside the existing supportsOrganizationRoles check in all three entry points: createMember, edit modal, and the members table action menu. --- .../(console)/organization-[organization]/createMember.svelte | 4 +++- .../organization-[organization]/members/+page.svelte | 2 +- .../(console)/organization-[organization]/members/edit.svelte | 4 +++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/routes/(console)/organization-[organization]/createMember.svelte b/src/routes/(console)/organization-[organization]/createMember.svelte index 32f480d7f5..79fd1d9838 100644 --- a/src/routes/(console)/organization-[organization]/createMember.svelte +++ b/src/routes/(console)/organization-[organization]/createMember.svelte @@ -26,7 +26,9 @@ oncreated?: (team: Models.Membership) => void; } = $props(); - const supportsProjectRoles = $derived(isCloud && !!$currentPlan?.supportsOrganizationRoles); + const supportsProjectRoles = $derived( + isCloud && !!$currentPlan?.supportsOrganizationRoles && $currentPlan?.group === 'scale' + ); let email = $state(''); let name = $state(''); diff --git a/src/routes/(console)/organization-[organization]/members/+page.svelte b/src/routes/(console)/organization-[organization]/members/+page.svelte index 67bbce0d9e..eccff49926 100644 --- a/src/routes/(console)/organization-[organization]/members/+page.svelte +++ b/src/routes/(console)/organization-[organization]/members/+page.svelte @@ -217,7 +217,7 @@
- {#if isCloud && $currentPlan?.supportsOrganizationRoles} + {#if isCloud && $currentPlan?.supportsOrganizationRoles && $currentPlan?.group === 'scale'} { diff --git a/src/routes/(console)/organization-[organization]/members/edit.svelte b/src/routes/(console)/organization-[organization]/members/edit.svelte index 38e01c30b2..80acf45614 100644 --- a/src/routes/(console)/organization-[organization]/members/edit.svelte +++ b/src/routes/(console)/organization-[organization]/members/edit.svelte @@ -31,7 +31,9 @@ onupdated?: (membership: Models.Membership) => void; } = $props(); - const supportsProjectRoles = $derived(isCloud && !!$currentPlan?.supportsOrganizationRoles); + const supportsProjectRoles = $derived( + isCloud && !!$currentPlan?.supportsOrganizationRoles && $currentPlan?.group === 'scale' + ); const defaultRole = isSelfHosted ? 'owner' : 'developer'; let error = $state(null); From b380831e9bbe76d5adac2ba34338fce9c72b708e Mon Sep 17 00:00:00 2001 From: harsh mahajan Date: Fri, 29 May 2026 23:29:41 +0530 Subject: [PATCH 2/2] feat: gate project-specific roles on supportsProjectSpecificRoles plan flag Replaces the hardcoded group === 'scale' check with the dedicated supportsProjectSpecificRoles boolean from the plan object, following the same pattern as supportsOrganizationRoles, supportsMockNumbers, etc. --- .../(console)/organization-[organization]/createMember.svelte | 2 +- .../(console)/organization-[organization]/members/+page.svelte | 2 +- .../(console)/organization-[organization]/members/edit.svelte | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/routes/(console)/organization-[organization]/createMember.svelte b/src/routes/(console)/organization-[organization]/createMember.svelte index 79fd1d9838..f03644e2b5 100644 --- a/src/routes/(console)/organization-[organization]/createMember.svelte +++ b/src/routes/(console)/organization-[organization]/createMember.svelte @@ -27,7 +27,7 @@ } = $props(); const supportsProjectRoles = $derived( - isCloud && !!$currentPlan?.supportsOrganizationRoles && $currentPlan?.group === 'scale' + isCloud && !!$currentPlan?.supportsProjectSpecificRoles ); let email = $state(''); diff --git a/src/routes/(console)/organization-[organization]/members/+page.svelte b/src/routes/(console)/organization-[organization]/members/+page.svelte index eccff49926..6acb7ff181 100644 --- a/src/routes/(console)/organization-[organization]/members/+page.svelte +++ b/src/routes/(console)/organization-[organization]/members/+page.svelte @@ -217,7 +217,7 @@
- {#if isCloud && $currentPlan?.supportsOrganizationRoles && $currentPlan?.group === 'scale'} + {#if isCloud && $currentPlan?.supportsProjectSpecificRoles} { diff --git a/src/routes/(console)/organization-[organization]/members/edit.svelte b/src/routes/(console)/organization-[organization]/members/edit.svelte index 80acf45614..c272c5a69b 100644 --- a/src/routes/(console)/organization-[organization]/members/edit.svelte +++ b/src/routes/(console)/organization-[organization]/members/edit.svelte @@ -32,7 +32,7 @@ } = $props(); const supportsProjectRoles = $derived( - isCloud && !!$currentPlan?.supportsOrganizationRoles && $currentPlan?.group === 'scale' + isCloud && !!$currentPlan?.supportsProjectSpecificRoles ); const defaultRole = isSelfHosted ? 'owner' : 'developer';