twenty/packages/twenty-zapier
Charles Bochet 46e515436e
Deprecate legacy RICH_TEXT field metadata type (#18623)
## Summary

- Removes the deprecated `RICH_TEXT` (V1) field metadata type from the
codebase entirely
- Adds a 1.20 upgrade command that migrates existing `RICH_TEXT` fields
to `TEXT` in `core.fieldMetadata`
- Cleans up ~70 files across `twenty-shared`, `twenty-server`,
`twenty-front`, `twenty-sdk`, and `twenty-zapier`

## Context

`RICH_TEXT` was a legacy field type that stored rich text as a single
`text` column. It was already **read-only** — writes threw errors
directing users to `RICH_TEXT_V2` instead. `RICH_TEXT_V2` is the current
approach: a composite type with `blocknote` (editor JSON) and `markdown`
subfields. Keeping the deprecated type added maintenance burden without
any value.

Since the underlying database column type for `RICH_TEXT` was already
`text` (same as `TEXT`), the migration only needs to update the metadata
— no data migration or column changes required.

## Changes

### Upgrade command (new)
- `1-20-migrate-rich-text-to-text.command.ts` — runs `UPDATE
core."fieldMetadata" SET "type" = 'TEXT' WHERE "type" = 'RICH_TEXT'` per
workspace, with cache invalidation

### Enum & shared types
- Removed `RICH_TEXT` from `FieldMetadataType` enum
- Removed from `FieldMetadataDefaultValueMapping`,
`isFieldMetadataTextKind`

### Server (~30 files)
- Removed from type mapper (scalar, filter, order-by), data processors,
input transformer, filter operators, zod schemas, column type mapping,
searchable fields, RLS matching, OpenAPI schema, fake value generators
- Removed from field creation flow and field metadata type validator
- Updated dev seeder Pet `bio` field to `TEXT`
- Cleaned up mocks, snapshots, integration tests

### Frontend (~25 files)
- Deleted: `RichTextFieldDisplay`, `isFieldRichText`,
`isFieldRichTextValue`, `useRichTextFieldDisplay`
- Removed from `FieldDisplay`, `usePersistField`, `isFieldValueEmpty`,
`isRecordMatchingFilter`, `generateEmptyFieldValue`,
`isFieldCellSupported`, spreadsheet import, workflow fake values
- Removed from settings types, field type configs, and field creation
exclusion list
- Updated tests, mocks, and stories

### SDK & Zapier
- Removed from generated GraphQL schema and TypeScript types
- Removed from Zapier `computeInputFields`
2026-03-13 17:25:40 +01:00
..
src Deprecate legacy RICH_TEXT field metadata type (#18623) 2026-03-13 17:25:40 +01:00
.gitignore Migrate from ESLint to OxLint (#18443) 2026-03-06 01:03:50 +01:00
.oxlintrc.json Optimize merge queue to only run E2E and integrate prettier into lint (#18459) 2026-03-06 13:20:57 +01:00
.zapierapprc 2038 zapier integration 1 initialize a zapier app with a twenty related account (#2089) 2023-10-17 21:00:20 +02:00
CHANGELOG.md Optimize merge queue to only run E2E and integrate prettier into lint (#18459) 2026-03-06 13:20:57 +01:00
index.js Fix twenty zapier (#18191) 2026-02-25 10:35:46 +01:00
jest.config.mjs Fix twenty zapier (#18191) 2026-02-25 10:35:46 +01:00
package.json Fix twenty zapier (#18191) 2026-02-25 10:35:46 +01:00
project.json Optimize merge queue to only run E2E and integrate prettier into lint (#18459) 2026-03-06 13:20:57 +01:00
tsconfig.json Fix twenty zapier (#18191) 2026-02-25 10:35:46 +01:00
vite.config.ts Fix twenty zapier (#18191) 2026-02-25 10:35:46 +01:00