refactor(app-marketplace): rename featured to vetted (#22674)
## What Renames the application-registration "featured" flag to "vetted" across the backend, frontend, GraphQL schema/DTOs, and the marketplace UI. "Vetted" better describes what the flag actually does today: it marks an app as reviewed and approved by the Twenty team (a trust signal), rather than "featured" which reads as spotlighting/promotion. The admin toggle description was already "Mark this app as reviewed and approved". ## How - Renamed `isFeatured` -> `isVetted` on the `ApplicationRegistration` entity, DTOs (`MarketplaceApp`, `MarketplaceAppDetail`, `UpdateApplicationRegistrationPayload`), services, GraphQL fragments, and the settings/admin UI (labels: "Featured" -> "Vetted", "Featured only" -> "Vetted only", etc.). - Renamed the `MARKETPLACE_FEATURED_APPLICATIONS` constant/file to `MARKETPLACE_VETTED_APPLICATIONS`. - Regenerated GraphQL client artifacts (`generated-metadata`, `generated-admin`, `twenty-client-sdk`). ### Database The `isFeatured` column is renamed in place to `isVetted` via a single 2.20 fast instance command (`ALTER TABLE ... RENAME COLUMN`). No new column, no data-copy backfill. - Since all 2.19 commands (including the existing `isFeatured` backfill) complete before any 2.20 command runs, the rename carries over the values that backfill set. - The entity uses `@WasRenamedInUpgrade` so the upgrade-aware layer queries the old column name until the rename step runs during an upgrade. ## Testing - `nx typecheck` and `nx lint:diff-with-main` pass for twenty-server and twenty-front. - Ran `database:reset` on a fresh dev DB: the 2.19 `isFeatured` backfill runs first, then the 2.20 rename; the column ends up as `isVetted` (and `isFeatured` no longer exists), values preserved. - Booted the server: the `@WasRenamedInUpgrade` decorator validates against the upgrade sequence, and GraphQL introspection confirms all four types expose `isVetted` and none expose `isFeatured`. - Ran the three `graphql:generate` configs and the SDK metadata client generator so the committed generated files match the generator output (field ordering included). ## Notes - The `api-breaking-changes` check flags the removal of the `isFeatured` GraphQL field — that is expected and inherent to this rename. - Translation catalogs (`locales/`) are intentionally not touched here since they are managed via Crowdin; new English strings render via Lingui's default-message fallback until translated.
This commit is contained in:
@@ -53,7 +53,7 @@ type ApplicationRegistration {
|
||||
sourcePackage: String
|
||||
latestAvailableVersion: String
|
||||
isListed: Boolean!
|
||||
isFeatured: Boolean!
|
||||
isVetted: Boolean!
|
||||
isPreInstalled: Boolean!
|
||||
logoUrl: String
|
||||
createdAt: DateTime!
|
||||
@@ -2200,7 +2200,7 @@ type MarketplaceApp {
|
||||
category: String!
|
||||
logo: String
|
||||
sourcePackage: String
|
||||
isFeatured: Boolean!
|
||||
isVetted: Boolean!
|
||||
}
|
||||
|
||||
type MarketplaceAppRoleObjectPermission {
|
||||
@@ -2244,7 +2244,7 @@ type MarketplaceAppDetail {
|
||||
sourcePackage: String
|
||||
latestAvailableVersion: String
|
||||
isListed: Boolean!
|
||||
isFeatured: Boolean!
|
||||
isVetted: Boolean!
|
||||
description: String
|
||||
author: String
|
||||
category: String
|
||||
@@ -3154,7 +3154,7 @@ type Query {
|
||||
findOneApplication(id: UUID, universalIdentifier: UUID): Application!
|
||||
findManyMarketplaceApps: [MarketplaceApp!]!
|
||||
findMarketplaceAppDetail(universalIdentifier: String!): MarketplaceAppDetail!
|
||||
publicMarketplaceApps(isFeatured: Boolean! = true): [MarketplaceApp!]!
|
||||
publicMarketplaceApps(isVetted: Boolean! = true): [MarketplaceApp!]!
|
||||
publicMarketplaceAppDetail(universalIdentifier: String!): MarketplaceAppDetail!
|
||||
findApplicationRegistrationByClientId(clientId: String!): PublicApplicationRegistration
|
||||
findApplicationRegistrationByUniversalIdentifier(universalIdentifier: String!): ApplicationRegistration
|
||||
@@ -4329,7 +4329,7 @@ input UpdateApplicationRegistrationPayload {
|
||||
oAuthScopes: [String!]
|
||||
isListed: Boolean
|
||||
isPreInstalled: Boolean
|
||||
isFeatured: Boolean
|
||||
isVetted: Boolean
|
||||
}
|
||||
|
||||
input CreateApplicationRegistrationVariableInput {
|
||||
|
||||
Reference in New Issue
Block a user