diff --git a/packages/twenty-front/src/generated-metadata/graphql.ts b/packages/twenty-front/src/generated-metadata/graphql.ts index 88442c803f..cbb47a4eae 100644 --- a/packages/twenty-front/src/generated-metadata/graphql.ts +++ b/packages/twenty-front/src/generated-metadata/graphql.ts @@ -1458,7 +1458,6 @@ export enum FeatureFlagKey { IS_FILES_FIELD_ENABLED = 'IS_FILES_FIELD_ENABLED', IS_JSON_FILTER_ENABLED = 'IS_JSON_FILTER_ENABLED', IS_JUNCTION_RELATIONS_ENABLED = 'IS_JUNCTION_RELATIONS_ENABLED', - IS_PAGE_LAYOUT_ENABLED = 'IS_PAGE_LAYOUT_ENABLED', IS_PUBLIC_DOMAIN_ENABLED = 'IS_PUBLIC_DOMAIN_ENABLED', IS_RECORD_PAGE_LAYOUT_ENABLED = 'IS_RECORD_PAGE_LAYOUT_ENABLED', IS_ROW_LEVEL_PERMISSION_PREDICATES_ENABLED = 'IS_ROW_LEVEL_PERMISSION_PREDICATES_ENABLED', diff --git a/packages/twenty-front/src/generated/graphql.ts b/packages/twenty-front/src/generated/graphql.ts index d981e0f383..1249b47ee4 100644 --- a/packages/twenty-front/src/generated/graphql.ts +++ b/packages/twenty-front/src/generated/graphql.ts @@ -1425,7 +1425,6 @@ export enum FeatureFlagKey { IS_FILES_FIELD_ENABLED = 'IS_FILES_FIELD_ENABLED', IS_JSON_FILTER_ENABLED = 'IS_JSON_FILTER_ENABLED', IS_JUNCTION_RELATIONS_ENABLED = 'IS_JUNCTION_RELATIONS_ENABLED', - IS_PAGE_LAYOUT_ENABLED = 'IS_PAGE_LAYOUT_ENABLED', IS_PUBLIC_DOMAIN_ENABLED = 'IS_PUBLIC_DOMAIN_ENABLED', IS_RECORD_PAGE_LAYOUT_ENABLED = 'IS_RECORD_PAGE_LAYOUT_ENABLED', IS_ROW_LEVEL_PERMISSION_PREDICATES_ENABLED = 'IS_ROW_LEVEL_PERMISSION_PREDICATES_ENABLED', diff --git a/packages/twenty-front/src/modules/favorites/hooks/useWorkspaceFavorites.ts b/packages/twenty-front/src/modules/favorites/hooks/useWorkspaceFavorites.ts index 04d2a839b3..5f74df692e 100644 --- a/packages/twenty-front/src/modules/favorites/hooks/useWorkspaceFavorites.ts +++ b/packages/twenty-front/src/modules/favorites/hooks/useWorkspaceFavorites.ts @@ -6,17 +6,12 @@ import { objectMetadataItemsState } from '@/object-metadata/states/objectMetadat import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular'; import { coreViewsState } from '@/views/states/coreViewState'; import { convertCoreViewToView } from '@/views/utils/convertCoreViewToView'; -import { useFeatureFlagsMap } from '@/workspace/hooks/useFeatureFlagsMap'; import { useMemo } from 'react'; import { useRecoilValue } from 'recoil'; -import { - FeatureFlagKey, - FieldMetadataType, -} from '~/generated-metadata/graphql'; +import { FieldMetadataType } from '~/generated-metadata/graphql'; import { usePrefetchedFavoritesData } from './usePrefetchedFavoritesData'; export const useWorkspaceFavorites = () => { - const featureFlags = useFeatureFlagsMap(); const { workspaceFavorites } = usePrefetchedFavoritesData(); const coreViews = useRecoilValue(coreViewsState); const objectMetadataItems = useRecoilValue(objectMetadataItemsState); @@ -38,17 +33,7 @@ export const useWorkspaceFavorites = () => { [favoriteObjectMetadataItem.fields], ); - const [dashboardObjectMetadataId] = objectMetadataItems - .filter((item) => item.nameSingular === CoreObjectNameSingular.Dashboard) - .map((item) => item.id); - - const views = coreViews - .map(convertCoreViewToView) - .filter( - (view) => - featureFlags[FeatureFlagKey.IS_PAGE_LAYOUT_ENABLED] === true || - view.objectMetadataId !== dashboardObjectMetadataId, - ); + const views = coreViews.map(convertCoreViewToView); const sortedWorkspaceFavorites = useMemo( () => diff --git a/packages/twenty-front/src/modules/object-record/record-show/utils/__tests__/evaluateTabVisibility.test.ts b/packages/twenty-front/src/modules/object-record/record-show/utils/__tests__/evaluateTabVisibility.test.ts index a99494ac20..15ed6a8f9c 100644 --- a/packages/twenty-front/src/modules/object-record/record-show/utils/__tests__/evaluateTabVisibility.test.ts +++ b/packages/twenty-front/src/modules/object-record/record-show/utils/__tests__/evaluateTabVisibility.test.ts @@ -110,7 +110,7 @@ describe('evaluateTabVisibility', () => { evaluateTabVisibility( { ...baseConfig, - ifFeaturesDisabled: [FeatureFlagKey.IS_PAGE_LAYOUT_ENABLED], + ifFeaturesDisabled: [FeatureFlagKey.IS_RECORD_PAGE_LAYOUT_ENABLED], }, baseContext, ), @@ -123,7 +123,7 @@ describe('evaluateTabVisibility', () => { currentWorkspace: { featureFlags: [ { key: FeatureFlagKey.IS_AI_ENABLED, value: true }, - { key: FeatureFlagKey.IS_PAGE_LAYOUT_ENABLED, value: true }, + { key: FeatureFlagKey.IS_RECORD_PAGE_LAYOUT_ENABLED, value: true }, ], }, }; @@ -131,7 +131,7 @@ describe('evaluateTabVisibility', () => { evaluateTabVisibility( { ...baseConfig, - ifFeaturesDisabled: [FeatureFlagKey.IS_PAGE_LAYOUT_ENABLED], + ifFeaturesDisabled: [FeatureFlagKey.IS_RECORD_PAGE_LAYOUT_ENABLED], }, ctx, ), diff --git a/packages/twenty-server/src/engine/core-modules/feature-flag/constants/public-feature-flag.const.ts b/packages/twenty-server/src/engine/core-modules/feature-flag/constants/public-feature-flag.const.ts index 22a5ea3ed1..8e5427f9ed 100644 --- a/packages/twenty-server/src/engine/core-modules/feature-flag/constants/public-feature-flag.const.ts +++ b/packages/twenty-server/src/engine/core-modules/feature-flag/constants/public-feature-flag.const.ts @@ -12,14 +12,6 @@ export type PublicFeatureFlag = { }; export const PUBLIC_FEATURE_FLAGS: PublicFeatureFlag[] = [ - { - key: FeatureFlagKey.IS_PAGE_LAYOUT_ENABLED, - metadata: { - label: 'Dashboards', - description: 'Enable dashboards', - imagePath: 'https://twenty.com/images/lab/is-dashboards-enabled.png', - }, - }, { key: FeatureFlagKey.IS_JUNCTION_RELATIONS_ENABLED, metadata: { diff --git a/packages/twenty-server/src/engine/core-modules/feature-flag/enums/feature-flag-key.enum.ts b/packages/twenty-server/src/engine/core-modules/feature-flag/enums/feature-flag-key.enum.ts index 1b68bd5e68..1da6db90fe 100644 --- a/packages/twenty-server/src/engine/core-modules/feature-flag/enums/feature-flag-key.enum.ts +++ b/packages/twenty-server/src/engine/core-modules/feature-flag/enums/feature-flag-key.enum.ts @@ -4,7 +4,6 @@ export enum FeatureFlagKey { IS_AI_ENABLED = 'IS_AI_ENABLED', IS_APPLICATION_ENABLED = 'IS_APPLICATION_ENABLED', IS_APPLICATION_INSTALLATION_FROM_TARBALL_ENABLED = 'IS_APPLICATION_INSTALLATION_FROM_TARBALL_ENABLED', - IS_PAGE_LAYOUT_ENABLED = 'IS_PAGE_LAYOUT_ENABLED', IS_RECORD_PAGE_LAYOUT_ENABLED = 'IS_RECORD_PAGE_LAYOUT_ENABLED', IS_PUBLIC_DOMAIN_ENABLED = 'IS_PUBLIC_DOMAIN_ENABLED', IS_EMAILING_DOMAIN_ENABLED = 'IS_EMAILING_DOMAIN_ENABLED', diff --git a/packages/twenty-server/src/engine/core-modules/open-api/open-api.service.ts b/packages/twenty-server/src/engine/core-modules/open-api/open-api.service.ts index 27df66864e..171c7ef4a7 100644 --- a/packages/twenty-server/src/engine/core-modules/open-api/open-api.service.ts +++ b/packages/twenty-server/src/engine/core-modules/open-api/open-api.service.ts @@ -10,8 +10,6 @@ import { import { DatabaseEventAction } from 'src/engine/api/graphql/graphql-query-runner/enums/database-event-action'; import { AccessTokenService } from 'src/engine/core-modules/auth/token/services/access-token.service'; -import { FeatureFlagKey } from 'src/engine/core-modules/feature-flag/enums/feature-flag-key.enum'; -import { FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service'; import { baseSchema } from 'src/engine/core-modules/open-api/utils/base-schema.utils'; import { computeMetadataSchemaComponents, @@ -57,7 +55,6 @@ export class OpenApiService { private readonly accessTokenService: AccessTokenService, private readonly twentyConfigService: TwentyConfigService, private readonly flatEntityMapsCacheService: WorkspaceManyOrAllFlatEntityMapsCacheService, - private readonly featureFlagService: FeatureFlagService, ) {} private async getWorkspaceFromRequest(request: Request) { @@ -279,12 +276,6 @@ export class OpenApiService { return schema; } - const workspaceFeatureFlagsMap = - await this.featureFlagService.getWorkspaceFeatureFlagsMap(workspace.id); - - const isPageLayoutEnabled = - workspaceFeatureFlagsMap[FeatureFlagKey.IS_PAGE_LAYOUT_ENABLED]; - const metadata = [ { nameSingular: 'object', @@ -326,22 +317,18 @@ export class OpenApiService { nameSingular: 'viewFilterGroup', namePlural: 'viewFilterGroups', }, - ...(isPageLayoutEnabled - ? [ - { - nameSingular: 'pageLayout', - namePlural: 'pageLayouts', - }, - { - nameSingular: 'pageLayoutTab', - namePlural: 'pageLayoutTabs', - }, - { - nameSingular: 'pageLayoutWidget', - namePlural: 'pageLayoutWidgets', - }, - ] - : []), + { + nameSingular: 'pageLayout', + namePlural: 'pageLayouts', + }, + { + nameSingular: 'pageLayoutTab', + namePlural: 'pageLayoutTabs', + }, + { + nameSingular: 'pageLayoutWidget', + namePlural: 'pageLayoutWidgets', + }, ]; schema.paths = metadata.reduce((path, item) => { diff --git a/packages/twenty-server/src/engine/twenty-orm/entity-manager/workspace-entity-manager.spec.ts b/packages/twenty-server/src/engine/twenty-orm/entity-manager/workspace-entity-manager.spec.ts index 9c4a4142c4..907aef2847 100644 --- a/packages/twenty-server/src/engine/twenty-orm/entity-manager/workspace-entity-manager.spec.ts +++ b/packages/twenty-server/src/engine/twenty-orm/entity-manager/workspace-entity-manager.spec.ts @@ -212,7 +212,6 @@ describe('WorkspaceEntityManager', () => { IS_AI_ENABLED: false, IS_APPLICATION_ENABLED: false, IS_IMAP_SMTP_CALDAV_ENABLED: false, - IS_PAGE_LAYOUT_ENABLED: false, IS_RECORD_PAGE_LAYOUT_ENABLED: false, IS_PUBLIC_DOMAIN_ENABLED: false, IS_EMAILING_DOMAIN_ENABLED: false, @@ -240,7 +239,6 @@ describe('WorkspaceEntityManager', () => { IS_JSON_FILTER_ENABLED: false, IS_AI_ENABLED: false, IS_APPLICATION_ENABLED: false, - IS_PAGE_LAYOUT_ENABLED: false, IS_RECORD_PAGE_LAYOUT_ENABLED: false, IS_PUBLIC_DOMAIN_ENABLED: false, IS_EMAILING_DOMAIN_ENABLED: false, diff --git a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/seed-feature-flags.util.ts b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/seed-feature-flags.util.ts index eea7a1e994..b67eaa6a0e 100644 --- a/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/seed-feature-flags.util.ts +++ b/packages/twenty-server/src/engine/workspace-manager/dev-seeder/core/utils/seed-feature-flags.util.ts @@ -36,11 +36,6 @@ export const seedFeatureFlags = async ({ workspaceId: workspaceId, value: true, }, - { - key: FeatureFlagKey.IS_PAGE_LAYOUT_ENABLED, - workspaceId: workspaceId, - value: true, - }, { key: FeatureFlagKey.IS_RECORD_PAGE_LAYOUT_ENABLED, workspaceId: workspaceId, diff --git a/packages/twenty-website/public/images/lab/is-dashboards-enabled.png b/packages/twenty-website/public/images/lab/is-dashboards-enabled.png deleted file mode 100644 index 81dfa616bf..0000000000 Binary files a/packages/twenty-website/public/images/lab/is-dashboards-enabled.png and /dev/null differ