From c6ea7ae288eb14e032eeffa1f6c3a92ffecff7ec Mon Sep 17 00:00:00 2001
From: "Abdullah." <125115953+mabdullahabaid@users.noreply.github.com>
Date: Tue, 23 Dec 2025 03:22:30 +0500
Subject: [PATCH] Allow custom fields to be editable for system objects and
prevent the error for timeline activity on system object pages. (#16268)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Solves #16015
- Added a check in `useTimelineActivities.ts` to see if the system
object page we're viewing has timelineActivity being tracked before
querying to get the activity history.
- Removed @WorkspaceIsObjectUIReadOnly decorator from system objects and
added @WorkspaceIsFieldUIReadOnly to standard and system fields to allow
custom field edits as requested in the issue.
- Did not add calendarEvents or other system objects to timelineActivity
just yet since keeping track of timeline activity for every one of them
felt counter-intuitive and bloated. In order to determine which objects
need timelineActivity, I think we need to fix the broken views of system
objects first, such as the one in the attached screenshots - a good
number of them are broken. The check I added to
`useTimelineActivities.ts` hook displays timeline activity as empty for
the time - error would not be shown as suggested by Thomas.
- Editing custom fields on calendar events (and other objects without
position fields) crashed with TypeError: Cannot convert undefined or
null to object in sortCachedObjectEdges. This happened because some
cached queries had empty orderBy arrays ([]), and the optimistic effect
tried to sort with them. Objects without position fields returned
empty orderBy arrays when there were no sorts, while objects with
position fields automatically got [{ position: 'AscNullsFirst' }].
The backend always adds { id: 'AscNullsFirst' } as a fallback, but
the frontend didn't match this. So, I added { id: 'AscNullsFirst' } to
the Frontend as default orderBy when there are no sorts and no position
field.
---
> [!NOTE]
> Apply per-field UI read-only to system/standard fields and skip
timeline activity fetching when the target object isn’t related; refine
record-table cell open/navigation behavior.
>
> - Server: Replace object-level UI read-only with per-field
`isUIReadOnly` across many standard objects (e.g., `calendarEvent`,
`workspaceMember`, messaging, calendar, favorites, attachments,
workflows, etc.), and mirror this via `@WorkspaceIsFieldUIReadOnly` on
workspace entities.
> - Frontend: In `useTimelineActivities.ts`, check object metadata for a
relation to `timelineActivity` and `skip` the query when absent,
preventing errors on system object pages.
> - Frontend: Simplify/adjust record-table cell logic—remove unused
args, allow navigation from first column when non-empty, block editing
for read-only records (while still allowing navigation), and update
button handlers/hover styles accordingly.
>
> Written by [Cursor
Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
dac1262d70d97ce84b39730454dd3579c494994a. This will update automatically
on new commits. Configure
[here](https://cursor.com/dashboard?tab=bugbot).
---------
Co-authored-by: Félix Malfait
---
.../hooks/useTimelineActivities.ts | 13 ++++++++
.../components/RecordTableCellEditButton.tsx | 2 +-
.../RecordTableCellHoveredPortalContent.tsx | 25 +++++++++------
.../hooks/useOpenRecordTableCell.ts | 32 +++----------------
.../hooks/useOpenRecordTableCellFromCell.ts | 26 +--------------
...hment-standard-flat-field-metadata.util.ts | 10 ++++++
...klist-standard-flat-field-metadata.util.ts | 2 ++
...ation-standard-flat-field-metadata.util.ts | 4 +++
...annel-standard-flat-field-metadata.util.ts | 13 ++++++++
...ipant-standard-flat-field-metadata.util.ts | 7 ++++
...event-standard-flat-field-metadata.util.ts | 14 ++++++++
...count-standard-flat-field-metadata.util.ts | 13 ++++++++
...older-standard-flat-field-metadata.util.ts | 3 ++
...orite-standard-flat-field-metadata.util.ts | 13 ++++++++
...ation-standard-flat-field-metadata.util.ts | 6 ++++
...annel-standard-flat-field-metadata.util.ts | 19 +++++++++++
...older-standard-flat-field-metadata.util.ts | 8 +++++
...ipant-standard-flat-field-metadata.util.ts | 6 ++++
...ssage-standard-flat-field-metadata.util.ts | 8 +++++
...hread-standard-flat-field-metadata.util.ts | 2 ++
...arget-standard-flat-field-metadata.util.ts | 4 +++
...arget-standard-flat-field-metadata.util.ts | 4 +++
...ivity-standard-flat-field-metadata.util.ts | 16 ++++++++++
...igger-standard-flat-field-metadata.util.ts | 3 ++
...w-run-standard-flat-field-metadata.util.ts | 15 +++++++++
...rsion-standard-flat-field-metadata.util.ts | 10 ++++++
...ember-standard-flat-field-metadata.util.ts | 21 ++++++++++++
...eate-standard-flat-object-metadata.util.ts | 3 --
.../attachment.workspace-entity.ts | 12 +++++++
.../blocklist.workspace-entity.ts | 3 ++
...nnel-event-association.workspace-entity.ts | 5 +++
.../calendar-channel.workspace-entity.ts | 14 ++++++++
...ndar-event-participant.workspace-entity.ts | 8 +++++
.../calendar-event.workspace-entity.ts | 17 ++++++++--
.../connected-account.workspace-entity.ts | 14 ++++++++
.../favorite-folder.workspace-entity.ts | 6 +++-
.../favorite.workspace-entity.ts | 14 ++++++++
...el-message-association.workspace-entity.ts | 8 ++++-
.../message-channel.workspace-entity.ts | 20 ++++++++++++
.../message-folder.workspace-entity.ts | 9 ++++++
.../message-participant.workspace-entity.ts | 7 ++++
.../message-thread.workspace-entity.ts | 2 ++
.../message.workspace-entity.ts | 8 +++++
.../note-target.workspace-entity.ts | 5 +++
.../task-target.workspace-entity.ts | 5 +++
...jects-with-timeline-activities.constant.ts | 4 +++
...meline-activity-from-internal-event.job.ts | 6 ++--
.../timeline-activity.workspace-entity.ts | 17 ++++++++++
...flow-automated-trigger.workspace-entity.ts | 4 +++
.../workflow-run.workspace-entity.ts | 16 ++++++++--
.../workflow-version.workspace-entity.ts | 13 ++++++--
.../workspace-member.workspace-entity.ts | 23 +++++++++++++
52 files changed, 465 insertions(+), 77 deletions(-)
create mode 100644 packages/twenty-server/src/modules/timeline/constants/system-objects-with-timeline-activities.constant.ts
diff --git a/packages/twenty-front/src/modules/activities/timeline-activities/hooks/useTimelineActivities.ts b/packages/twenty-front/src/modules/activities/timeline-activities/hooks/useTimelineActivities.ts
index 581fcd81ee7..6de5f3bb5bd 100644
--- a/packages/twenty-front/src/modules/activities/timeline-activities/hooks/useTimelineActivities.ts
+++ b/packages/twenty-front/src/modules/activities/timeline-activities/hooks/useTimelineActivities.ts
@@ -2,6 +2,7 @@ import { useLinkedObjectsTitle } from '@/activities/timeline-activities/hooks/us
import { type TimelineActivity } from '@/activities/timeline-activities/types/TimelineActivity';
import { type ActivityTargetableObject } from '@/activities/types/ActivityTargetableEntity';
import { getActivityTargetObjectFieldIdName } from '@/activities/utils/getActivityTargetObjectFieldIdName';
+import { useObjectMetadataItem } from '@/object-metadata/hooks/useObjectMetadataItem';
import { CoreObjectNameSingular } from '@/object-metadata/types/CoreObjectNameSingular';
import { useGenerateDepthRecordGqlFieldsFromObject } from '@/object-record/graphql/record-gql-fields/hooks/useGenerateDepthRecordGqlFieldsFromObject';
import { useFindManyRecords } from '@/object-record/hooks/useFindManyRecords';
@@ -23,6 +24,17 @@ export const useTimelineActivities = (
nameSingular: targetableObject.targetObjectNameSingular,
});
+ const { objectMetadataItem: timelineActivityMetadata } =
+ useObjectMetadataItem({
+ objectNameSingular: CoreObjectNameSingular.TimelineActivity,
+ });
+
+ const hasTimelineActivityField = timelineActivityMetadata.fields.some(
+ (field) =>
+ field.relation?.targetObjectMetadata?.nameSingular ===
+ targetableObject.targetObjectNameSingular,
+ );
+
const { recordGqlFields: depthOneRecordGqlFields } =
useGenerateDepthRecordGqlFieldsFromObject({
objectNameSingular: CoreObjectNameSingular.TimelineActivity,
@@ -34,6 +46,7 @@ export const useTimelineActivities = (
loading: loadingTimelineActivities,
fetchMoreRecords,
} = useFindManyRecords({
+ skip: !hasTimelineActivityField,
objectNameSingular: CoreObjectNameSingular.TimelineActivity,
filter: {
[targetableObjectFieldIdName]: {
diff --git a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellEditButton.tsx b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellEditButton.tsx
index fc362d1c7b5..b31442109db 100644
--- a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellEditButton.tsx
+++ b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellEditButton.tsx
@@ -26,7 +26,7 @@ export const RecordTableCellEditButton = () => {
const handleMainButtonClick = () => {
if (!isFieldInputOnly && isFirstColumn) {
- openTableCell(undefined, false, true);
+ openTableCell(undefined, true);
} else {
openTableCell();
}
diff --git a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellHoveredPortalContent.tsx b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellHoveredPortalContent.tsx
index 6d9e9e0a216..7131df76709 100644
--- a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellHoveredPortalContent.tsx
+++ b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/components/RecordTableCellHoveredPortalContent.tsx
@@ -18,27 +18,28 @@ import { BORDER_COMMON } from 'twenty-ui/theme';
import { useIsMobile } from 'twenty-ui/utilities';
const StyledRecordTableCellHoveredPortalContent = styled.div<{
- isReadOnly: boolean;
+ showInteractiveStyle: boolean;
isRowActive: boolean;
}>`
align-items: center;
background: ${({ theme }) => theme.background.transparent.secondary};
background-color: ${({ theme, isRowActive }) =>
isRowActive ? theme.accent.quaternary : theme.background.primary};
- border-radius: ${({ isReadOnly }) =>
- !isReadOnly ? BORDER_COMMON.radius.sm : 'none'};
+ border-radius: ${({ showInteractiveStyle }) =>
+ showInteractiveStyle ? BORDER_COMMON.radius.sm : 'none'};
box-sizing: border-box;
- cursor: ${({ isReadOnly }) => (isReadOnly ? 'default' : 'pointer')};
+ cursor: ${({ showInteractiveStyle }) =>
+ showInteractiveStyle ? 'pointer' : 'default'};
display: flex;
height: ${RECORD_TABLE_ROW_HEIGHT}px;
- outline: ${({ theme, isReadOnly, isRowActive }) =>
+ outline: ${({ theme, showInteractiveStyle, isRowActive }) =>
isRowActive
? 'none'
- : isReadOnly
- ? `1px solid ${theme.border.color.medium}`
- : `1px solid ${theme.font.color.extraLight}`};
+ : showInteractiveStyle
+ ? `1px solid ${theme.font.color.extraLight}`
+ : `1px solid ${theme.border.color.medium}`};
user-select: none;
`;
@@ -57,7 +58,11 @@ export const RecordTableCellHoveredPortalContent = () => {
const isFieldInputOnly = useIsFieldInputOnly();
const showButton =
- !isFieldInputOnly && !isReadOnly && !(isMobile && isFirstColumn);
+ !isFieldInputOnly &&
+ (!isReadOnly || isFirstColumn) &&
+ !(isMobile && isFirstColumn);
+
+ const showInteractiveStyle = !isReadOnly || (isFirstColumn && showButton);
const { rowIndex } = useRecordTableRowContextOrThrow();
@@ -68,7 +73,7 @@ export const RecordTableCellHoveredPortalContent = () => {
return (
{isFieldInputOnly ? (
diff --git a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCell.ts b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCell.ts
index d900f9e07b0..5eabe4fd996 100644
--- a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCell.ts
+++ b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCell.ts
@@ -1,10 +1,9 @@
-import { useRecoilCallback, useSetRecoilState } from 'recoil';
+import { useRecoilCallback } from 'recoil';
import { useInitDraftValue } from '@/object-record/record-field/ui/hooks/useInitDraftValue';
import { type FieldDefinition } from '@/object-record/record-field/ui/types/FieldDefinition';
import { type FieldMetadata } from '@/object-record/record-field/ui/types/FieldMetadata';
import { isFieldValueEmpty } from '@/object-record/record-field/ui/utils/isFieldValueEmpty';
-import { viewableRecordIdState } from '@/object-record/record-right-drawer/states/viewableRecordIdState';
import { recordStoreFamilySelector } from '@/object-record/record-store/states/selectors/recordStoreFamilySelector';
import { FOCUS_CLICK_OUTSIDE_LISTENER_ID } from '@/object-record/record-table/constants/FocusClickOutsideListenerId';
import { RECORD_TABLE_CELL_INPUT_ID_PREFIX } from '@/object-record/record-table/constants/RecordTableCellInputIdPrefix';
@@ -16,7 +15,6 @@ import { getSnapshotValue } from '@/ui/utilities/state/utils/getSnapshotValue';
import { useOpenFieldInputEditMode } from '@/object-record/record-field/ui/hooks/useOpenFieldInputEditMode';
import { recordIndexOpenRecordInState } from '@/object-record/record-index/states/recordIndexOpenRecordInState';
-import { viewableRecordNameSingularState } from '@/object-record/record-right-drawer/states/viewableRecordNameSingularState';
import { RECORD_TABLE_CLICK_OUTSIDE_LISTENER_ID } from '@/object-record/record-table/constants/RecordTableClickOutsideListenerId';
import { recordTableCellEditModePositionComponentState } from '@/object-record/record-table/states/recordTableCellEditModePositionComponentState';
import { getDropdownFocusIdForRecordField } from '@/object-record/utils/getDropdownFocusIdForRecordField';
@@ -37,11 +35,8 @@ export type OpenTableCellArgs = {
initialValue?: string;
cellPosition: TableCellPosition;
isReadOnly: boolean;
- pathToShowPage: string;
- objectNameSingular: string;
fieldDefinition: FieldDefinition;
recordId: string;
- isActionButtonClick: boolean;
isNavigating: boolean;
};
@@ -64,11 +59,6 @@ export const useOpenRecordTableCell = (recordTableId: string) => {
const initDraftValue = useInitDraftValue();
- const setViewableRecordId = useSetRecoilState(viewableRecordIdState);
- const setViewableRecordNameSingular = useSetRecoilState(
- viewableRecordNameSingularState,
- );
-
const { setActiveDropdownFocusIdAndMemorizePrevious } =
useSetActiveDropdownFocusIdAndMemorizePrevious();
@@ -94,16 +84,10 @@ export const useOpenRecordTableCell = (recordTableId: string) => {
initialValue,
cellPosition,
isReadOnly,
- objectNameSingular,
fieldDefinition,
recordId,
- isActionButtonClick,
isNavigating,
}: OpenTableCellArgs) => {
- if (isReadOnly) {
- return;
- }
-
set(clickOutsideListenerIsActivatedState, false);
const isFirstColumnCell = cellPosition.column === 0;
@@ -121,10 +105,7 @@ export const useOpenRecordTableCell = (recordTableId: string) => {
fieldValue,
});
- if (
- (isFirstColumnCell && !isEmpty && !isActionButtonClick) ||
- isNavigating
- ) {
+ if ((isFirstColumnCell && !isEmpty) || isNavigating) {
leaveTableFocus();
const openRecordIn = snapshot
@@ -141,11 +122,8 @@ export const useOpenRecordTableCell = (recordTableId: string) => {
return;
}
- if (isFirstColumnCell && !isEmpty && isActionButtonClick) {
- leaveTableFocus();
- setViewableRecordId(recordId);
- setViewableRecordNameSingular(objectNameSingular);
-
+ // Block editing for read-only records, but allow navigation (handled above)
+ if (isReadOnly) {
return;
}
@@ -200,8 +178,6 @@ export const useOpenRecordTableCell = (recordTableId: string) => {
leaveTableFocus,
activateRecordTableRow,
unfocusRecordTableRow,
- setViewableRecordId,
- setViewableRecordNameSingular,
openRecordFromIndexView,
],
);
diff --git a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellFromCell.ts b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellFromCell.ts
index 3ae4582736d..6ff50028a2f 100644
--- a/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellFromCell.ts
+++ b/packages/twenty-front/src/modules/object-record/record-table/record-table-cell/hooks/useOpenRecordTableCellFromCell.ts
@@ -1,23 +1,9 @@
import { useContext } from 'react';
import { FieldContext } from '@/object-record/record-field/ui/contexts/FieldContext';
-import { type FieldDefinition } from '@/object-record/record-field/ui/types/FieldDefinition';
-import { type FieldMetadata } from '@/object-record/record-field/ui/types/FieldMetadata';
-import { useRecordTableRowContextOrThrow } from '@/object-record/record-table/contexts/RecordTableRowContext';
-import { type TableCellPosition } from '@/object-record/record-table/types/TableCellPosition';
-
import { useRecordTableBodyContextOrThrow } from '@/object-record/record-table/contexts/RecordTableBodyContext';
import { RecordTableCellContext } from '@/object-record/record-table/contexts/RecordTableCellContext';
-export type OpenTableCellArgs = {
- initialValue?: string;
- cellPosition: TableCellPosition;
- isReadOnly: boolean;
- pathToShowPage: string;
- fieldDefinition: FieldDefinition;
- recordId: string;
-};
-
export const useOpenRecordTableCellFromCell = () => {
const {
recordId,
@@ -25,27 +11,17 @@ export const useOpenRecordTableCellFromCell = () => {
isRecordFieldReadOnly: isReadOnly,
} = useContext(FieldContext);
- const { pathToShowPage, objectNameSingular } =
- useRecordTableRowContextOrThrow();
-
const { onOpenTableCell } = useRecordTableBodyContextOrThrow();
const { cellPosition } = useContext(RecordTableCellContext);
- const openTableCell = (
- initialValue?: string,
- isActionButtonClick = false,
- isNavigating = false,
- ) => {
+ const openTableCell = (initialValue?: string, isNavigating = false) => {
onOpenTableCell({
cellPosition,
recordId,
fieldDefinition,
isReadOnly,
- pathToShowPage,
- objectNameSingular,
initialValue,
- isActionButtonClick,
isNavigating,
});
};
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-attachment-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-attachment-standard-flat-field-metadata.util.ts
index f497a6d450a..8ae5c968e3d 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-attachment-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-attachment-standard-flat-field-metadata.util.ts
@@ -118,6 +118,7 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({
description: 'Attachment name',
icon: 'IconFileUpload',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -134,6 +135,7 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({
description: 'Attachment full path',
icon: 'IconLink',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -150,6 +152,7 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({
description: 'Attachment file category',
icon: 'IconList',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: "'OTHER'",
options: [
{ value: 'ARCHIVE', label: 'Archive', position: 0, color: 'gray' },
@@ -217,6 +220,7 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({
description: 'Attachment task',
icon: 'IconNotes',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'task',
targetFieldName: 'attachments',
settings: {
@@ -241,6 +245,7 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({
description: 'Attachment note',
icon: 'IconNotes',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'note',
targetFieldName: 'attachments',
settings: {
@@ -265,6 +270,7 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({
description: 'Attachment person',
icon: 'IconUser',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'person',
targetFieldName: 'attachments',
settings: {
@@ -289,6 +295,7 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({
description: 'Attachment company',
icon: 'IconBuildingSkyscraper',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'company',
targetFieldName: 'attachments',
settings: {
@@ -313,6 +320,7 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({
description: 'Attachment opportunity',
icon: 'IconBuildingSkyscraper',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'opportunity',
targetFieldName: 'attachments',
settings: {
@@ -337,6 +345,7 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({
description: 'Attachment dashboard',
icon: 'IconLayout',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'dashboard',
targetFieldName: 'attachments',
settings: {
@@ -361,6 +370,7 @@ export const buildAttachmentStandardFlatFieldMetadatas = ({
description: 'Attachment workflow',
icon: 'IconSettingsAutomation',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'workflow',
targetFieldName: 'attachments',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-blocklist-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-blocklist-standard-flat-field-metadata.util.ts
index 046201c73d6..6adefa69252 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-blocklist-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-blocklist-standard-flat-field-metadata.util.ts
@@ -118,6 +118,7 @@ export const buildBlocklistStandardFlatFieldMetadatas = ({
description: 'Handle',
icon: 'IconAt',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -137,6 +138,7 @@ export const buildBlocklistStandardFlatFieldMetadatas = ({
description: 'WorkspaceMember',
icon: 'IconCircleUser',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'workspaceMember',
targetFieldName: 'blocklist',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-channel-event-association-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-channel-event-association-standard-flat-field-metadata.util.ts
index 8773532b7ed..fc34652a94f 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-channel-event-association-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-channel-event-association-standard-flat-field-metadata.util.ts
@@ -112,6 +112,7 @@ export const buildCalendarChannelEventAssociationStandardFlatFieldMetadatas = ({
description: 'Event external ID',
icon: 'IconCalendar',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -128,6 +129,7 @@ export const buildCalendarChannelEventAssociationStandardFlatFieldMetadatas = ({
description: 'Recurring Event ID',
icon: 'IconHistory',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -145,6 +147,7 @@ export const buildCalendarChannelEventAssociationStandardFlatFieldMetadatas = ({
description: 'Channel ID',
icon: 'IconCalendar',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'calendarChannel',
targetFieldName: 'calendarChannelEventAssociations',
settings: {
@@ -169,6 +172,7 @@ export const buildCalendarChannelEventAssociationStandardFlatFieldMetadatas = ({
description: 'Event ID',
icon: 'IconCalendar',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'calendarEvent',
targetFieldName: 'calendarChannelEventAssociations',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-channel-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-channel-standard-flat-field-metadata.util.ts
index d2c2d80becc..8bb969f06a3 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-channel-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-channel-standard-flat-field-metadata.util.ts
@@ -112,6 +112,7 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({
description: 'Handle',
icon: 'IconAt',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -128,6 +129,7 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({
description: 'Visibility',
icon: 'IconEyeglass',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: "'SHARE_EVERYTHING'",
options: [
{ value: 'METADATA', label: 'Metadata', position: 0, color: 'green' },
@@ -154,6 +156,7 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({
description: 'Is Contact Auto Creation Enabled',
icon: 'IconUserCircle',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: true,
},
standardObjectMetadataRelatedEntityIds,
@@ -172,6 +175,7 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({
'Automatically create records for people you participated with in an event.',
icon: 'IconUserCircle',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: "'AS_PARTICIPANT_AND_ORGANIZER'",
options: [
{
@@ -210,6 +214,7 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({
description: 'Is Sync Enabled',
icon: 'IconRefresh',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: true,
},
standardObjectMetadataRelatedEntityIds,
@@ -228,6 +233,7 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({
'Sync Cursor. Used for syncing events from the calendar provider',
icon: 'IconReload',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -244,6 +250,7 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({
description: 'Sync status',
icon: 'IconStatusChange',
isNullable: true,
+ isUIReadOnly: true,
options: [
{ value: 'ONGOING', label: 'Ongoing', position: 1, color: 'yellow' },
{
@@ -282,6 +289,7 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({
description: 'Sync stage',
icon: 'IconStatusChange',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: "'PENDING_CONFIGURATION'",
options: [
{
@@ -344,6 +352,7 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({
description: 'Sync stage started at',
icon: 'IconHistory',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -360,6 +369,7 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({
description: 'Last sync date',
icon: 'IconHistory',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -376,6 +386,7 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({
description: 'Throttle Failure Count',
icon: 'IconX',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: 0,
},
standardObjectMetadataRelatedEntityIds,
@@ -394,6 +405,7 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({
description: 'Connected Account',
icon: 'IconUserCircle',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'connectedAccount',
targetFieldName: 'calendarChannels',
settings: {
@@ -418,6 +430,7 @@ export const buildCalendarChannelStandardFlatFieldMetadatas = ({
description: 'Calendar Channel Event Associations',
icon: 'IconCalendar',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'calendarChannelEventAssociation',
targetFieldName: 'calendarChannel',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-event-participant-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-event-participant-standard-flat-field-metadata.util.ts
index 9b305d079f7..eb02310426f 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-event-participant-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-event-participant-standard-flat-field-metadata.util.ts
@@ -112,6 +112,7 @@ export const buildCalendarEventParticipantStandardFlatFieldMetadatas = ({
description: 'Handle',
icon: 'IconMail',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -128,6 +129,7 @@ export const buildCalendarEventParticipantStandardFlatFieldMetadatas = ({
description: 'Display Name',
icon: 'IconUser',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -144,6 +146,7 @@ export const buildCalendarEventParticipantStandardFlatFieldMetadatas = ({
description: 'Is Organizer',
icon: 'IconUser',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: false,
},
standardObjectMetadataRelatedEntityIds,
@@ -161,6 +164,7 @@ export const buildCalendarEventParticipantStandardFlatFieldMetadatas = ({
description: 'Response Status',
icon: 'IconUser',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: "'NEEDS_ACTION'",
options: [
{
@@ -195,6 +199,7 @@ export const buildCalendarEventParticipantStandardFlatFieldMetadatas = ({
description: 'Event ID',
icon: 'IconCalendar',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'calendarEvent',
targetFieldName: 'calendarEventParticipants',
settings: {
@@ -219,6 +224,7 @@ export const buildCalendarEventParticipantStandardFlatFieldMetadatas = ({
description: 'Person',
icon: 'IconUser',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'person',
targetFieldName: 'calendarEventParticipants',
settings: {
@@ -243,6 +249,7 @@ export const buildCalendarEventParticipantStandardFlatFieldMetadatas = ({
description: 'Workspace Member',
icon: 'IconUser',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'workspaceMember',
targetFieldName: 'calendarEventParticipants',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-event-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-event-standard-flat-field-metadata.util.ts
index df488b7b500..d98e56c13f8 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-event-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-calendar-event-standard-flat-field-metadata.util.ts
@@ -108,6 +108,7 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({
description: 'Title',
icon: 'IconH1',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -124,6 +125,7 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({
description: 'Is canceled',
icon: 'IconCalendarCancel',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: false,
},
standardObjectMetadataRelatedEntityIds,
@@ -141,6 +143,7 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({
description: 'Is Full Day',
icon: 'IconHours24',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: false,
},
standardObjectMetadataRelatedEntityIds,
@@ -158,6 +161,7 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({
description: 'Start Date',
icon: 'IconCalendarClock',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -174,6 +178,7 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({
description: 'End Date',
icon: 'IconCalendarClock',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -190,6 +195,7 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({
description: 'Creation DateTime',
icon: 'IconCalendarPlus',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -206,6 +212,7 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({
description: 'Update DateTime',
icon: 'IconCalendarCog',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -222,6 +229,7 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({
description: 'Description',
icon: 'IconFileDescription',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -238,6 +246,7 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({
description: 'Location',
icon: 'IconMapPin',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -254,6 +263,7 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({
description: 'iCal UID',
icon: 'IconKey',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -270,6 +280,7 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({
description: 'Conference Solution',
icon: 'IconScreenShare',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -286,6 +297,7 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({
description: 'Meet Link',
icon: 'IconLink',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -303,6 +315,7 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({
description: 'Calendar Channel Event Associations',
icon: 'IconCalendar',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'calendarChannelEventAssociation',
targetFieldName: 'calendarEvent',
settings: {
@@ -325,6 +338,7 @@ export const buildCalendarEventStandardFlatFieldMetadatas = ({
description: 'Event Participants',
icon: 'IconUserCircle',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'calendarEventParticipant',
targetFieldName: 'calendarEvent',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-connected-account-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-connected-account-standard-flat-field-metadata.util.ts
index 3f09e6ec768..d7154e81244 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-connected-account-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-connected-account-standard-flat-field-metadata.util.ts
@@ -112,6 +112,7 @@ export const buildConnectedAccountStandardFlatFieldMetadatas = ({
description: 'The account handle (email, username, phone number, etc.)',
icon: 'IconMail',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -128,6 +129,7 @@ export const buildConnectedAccountStandardFlatFieldMetadatas = ({
description: 'The account provider',
icon: 'IconSettings',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: "'google'",
},
standardObjectMetadataRelatedEntityIds,
@@ -145,6 +147,7 @@ export const buildConnectedAccountStandardFlatFieldMetadatas = ({
description: 'Messaging provider access token',
icon: 'IconKey',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -161,6 +164,7 @@ export const buildConnectedAccountStandardFlatFieldMetadatas = ({
description: 'Messaging provider refresh token',
icon: 'IconKey',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -177,6 +181,7 @@ export const buildConnectedAccountStandardFlatFieldMetadatas = ({
description: 'Last sync history ID',
icon: 'IconHistory',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -193,6 +198,7 @@ export const buildConnectedAccountStandardFlatFieldMetadatas = ({
description: 'Auth failed at',
icon: 'IconX',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -209,6 +215,7 @@ export const buildConnectedAccountStandardFlatFieldMetadatas = ({
description: 'Last credentials refreshed at',
icon: 'IconHistory',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -225,6 +232,7 @@ export const buildConnectedAccountStandardFlatFieldMetadatas = ({
description: 'Handle Aliases',
icon: 'IconMail',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -241,6 +249,7 @@ export const buildConnectedAccountStandardFlatFieldMetadatas = ({
description: 'Scopes',
icon: 'IconSettings',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -257,6 +266,7 @@ export const buildConnectedAccountStandardFlatFieldMetadatas = ({
description: 'JSON object containing custom connection parameters',
icon: 'IconSettings',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -274,6 +284,7 @@ export const buildConnectedAccountStandardFlatFieldMetadatas = ({
description: 'Account Owner',
icon: 'IconUserCircle',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'workspaceMember',
targetFieldName: 'connectedAccounts',
settings: {
@@ -298,6 +309,7 @@ export const buildConnectedAccountStandardFlatFieldMetadatas = ({
description: 'Message Channels',
icon: 'IconMessage',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'messageChannel',
targetFieldName: 'connectedAccount',
settings: {
@@ -320,6 +332,7 @@ export const buildConnectedAccountStandardFlatFieldMetadatas = ({
description: 'Calendar Channels',
icon: 'IconCalendar',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'calendarChannel',
targetFieldName: 'connectedAccount',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-favorite-folder-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-favorite-folder-standard-flat-field-metadata.util.ts
index 8ec1990ca16..40aa84514fc 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-favorite-folder-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-favorite-folder-standard-flat-field-metadata.util.ts
@@ -115,6 +115,7 @@ export const buildFavoriteFolderStandardFlatFieldMetadatas = ({
icon: 'IconList',
isSystem: true,
isNullable: false,
+ isUIReadOnly: true,
defaultValue: 0,
},
standardObjectMetadataRelatedEntityIds,
@@ -132,6 +133,7 @@ export const buildFavoriteFolderStandardFlatFieldMetadatas = ({
description: 'Name of the favorite folder',
icon: 'IconText',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -151,6 +153,7 @@ export const buildFavoriteFolderStandardFlatFieldMetadatas = ({
description: 'Favorites in this folder',
icon: 'IconHeart',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'favorite',
targetFieldName: 'favoriteFolder',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-favorite-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-favorite-standard-flat-field-metadata.util.ts
index 47b610130ca..1df919182bb 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-favorite-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-favorite-standard-flat-field-metadata.util.ts
@@ -113,6 +113,7 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({
icon: 'IconList',
isSystem: true,
isNullable: false,
+ isUIReadOnly: true,
defaultValue: 0,
},
standardObjectMetadataRelatedEntityIds,
@@ -130,6 +131,7 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({
description: 'ViewId',
icon: 'IconView',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -149,6 +151,7 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({
description: 'Favorite workspace member',
icon: 'IconCircleUser',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'workspaceMember',
targetFieldName: 'favorites',
settings: {
@@ -173,6 +176,7 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({
description: 'Favorite person',
icon: 'IconUser',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'person',
targetFieldName: 'favorites',
settings: {
@@ -197,6 +201,7 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({
description: 'Favorite company',
icon: 'IconBuildingSkyscraper',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'company',
targetFieldName: 'favorites',
settings: {
@@ -221,6 +226,7 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({
description: 'Favorite opportunity',
icon: 'IconTargetArrow',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'opportunity',
targetFieldName: 'favorites',
settings: {
@@ -245,6 +251,7 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({
description: 'Favorite workflow',
icon: 'IconSettingsAutomation',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'workflow',
targetFieldName: 'favorites',
settings: {
@@ -269,6 +276,7 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({
description: 'Favorite workflow version',
icon: 'IconSettingsAutomation',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'workflowVersion',
targetFieldName: 'favorites',
settings: {
@@ -293,6 +301,7 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({
description: 'Favorite workflow run',
icon: 'IconSettingsAutomation',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'workflowRun',
targetFieldName: 'favorites',
settings: {
@@ -317,6 +326,7 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({
description: 'Favorite task',
icon: 'IconCheckbox',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'task',
targetFieldName: 'favorites',
settings: {
@@ -341,6 +351,7 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({
description: 'Favorite note',
icon: 'IconNotes',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'note',
targetFieldName: 'favorites',
settings: {
@@ -365,6 +376,7 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({
description: 'Favorite dashboard',
icon: 'IconLayoutDashboard',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'dashboard',
targetFieldName: 'favorites',
settings: {
@@ -389,6 +401,7 @@ export const buildFavoriteStandardFlatFieldMetadatas = ({
description: 'The folder this favorite belongs to',
icon: 'IconFolder',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'favoriteFolder',
targetFieldName: 'favorites',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-channel-message-association-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-channel-message-association-standard-flat-field-metadata.util.ts
index 1750b19eced..9caabef4c05 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-channel-message-association-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-channel-message-association-standard-flat-field-metadata.util.ts
@@ -117,6 +117,7 @@ export const buildMessageChannelMessageAssociationStandardFlatFieldMetadatas =
description: 'Message id from the messaging provider',
icon: 'IconHash',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -133,6 +134,7 @@ export const buildMessageChannelMessageAssociationStandardFlatFieldMetadatas =
description: 'Thread id from the messaging provider',
icon: 'IconHash',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -149,6 +151,7 @@ export const buildMessageChannelMessageAssociationStandardFlatFieldMetadatas =
description: 'Message Direction',
icon: 'IconDirection',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: `'${MessageDirection.INCOMING}'`,
options: [
{
@@ -181,6 +184,7 @@ export const buildMessageChannelMessageAssociationStandardFlatFieldMetadatas =
description: 'Message Channel Id',
icon: 'IconHash',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'messageChannel',
targetFieldName: 'messageChannelMessageAssociations',
settings: {
@@ -205,6 +209,7 @@ export const buildMessageChannelMessageAssociationStandardFlatFieldMetadatas =
description: 'Message Thread Id',
icon: 'IconHash',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'messageThread',
targetFieldName: 'messageChannelMessageAssociations',
settings: {
@@ -229,6 +234,7 @@ export const buildMessageChannelMessageAssociationStandardFlatFieldMetadatas =
description: 'Message Id',
icon: 'IconHash',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'message',
targetFieldName: 'messageChannelMessageAssociations',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-channel-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-channel-standard-flat-field-metadata.util.ts
index 842e3f1f613..655b51f9bf0 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-channel-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-channel-standard-flat-field-metadata.util.ts
@@ -113,6 +113,7 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({
description: 'Visibility',
icon: 'IconEyeglass',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: "'SHARE_EVERYTHING'",
options: [
{ value: 'METADATA', label: 'Metadata', position: 0, color: 'green' },
@@ -140,6 +141,7 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({
description: 'Handle',
icon: 'IconAt',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -156,6 +158,7 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({
description: 'Channel Type',
icon: 'IconMessage',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: `'${MessageChannelType.EMAIL}'`,
options: [
{
@@ -187,6 +190,7 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({
description: 'Is Contact Auto Creation Enabled',
icon: 'IconUserCircle',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: true,
},
standardObjectMetadataRelatedEntityIds,
@@ -205,6 +209,7 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({
'Automatically create People records when receiving or sending emails',
icon: 'IconUserCircle',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: "'SENT'",
options: [
{
@@ -232,6 +237,7 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({
description: 'Message folder import policy',
icon: 'IconFolder',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: "'ALL_FOLDERS'",
options: [
{
@@ -263,6 +269,7 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({
description: 'Exclude non professional emails',
icon: 'IconBriefcase',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: true,
},
standardObjectMetadataRelatedEntityIds,
@@ -280,6 +287,7 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({
description: 'Exclude group emails',
icon: 'IconUsersGroup',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: true,
},
standardObjectMetadataRelatedEntityIds,
@@ -297,6 +305,7 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({
description: 'Pending action for group emails',
icon: 'IconUsersGroup',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: "'NONE'",
options: [
{
@@ -329,6 +338,7 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({
description: 'Is Sync Enabled',
icon: 'IconRefresh',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: true,
},
standardObjectMetadataRelatedEntityIds,
@@ -346,6 +356,7 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({
description: 'Last sync cursor',
icon: 'IconHistory',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -362,6 +373,7 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({
description: 'Last sync date',
icon: 'IconHistory',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -378,6 +390,7 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({
description: 'Sync status',
icon: 'IconStatusChange',
isNullable: true,
+ isUIReadOnly: true,
options: [
{ value: 'ONGOING', label: 'Ongoing', position: 1, color: 'yellow' },
{
@@ -416,6 +429,7 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({
description: 'Sync stage',
icon: 'IconStatusChange',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: "'PENDING_CONFIGURATION'",
options: [
{
@@ -478,6 +492,7 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({
description: 'Sync stage started at',
icon: 'IconHistory',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -494,6 +509,7 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({
description: 'Throttle Failure Count',
icon: 'IconX',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: 0,
},
standardObjectMetadataRelatedEntityIds,
@@ -512,6 +528,7 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({
description: 'Connected Account',
icon: 'IconUserCircle',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'connectedAccount',
targetFieldName: 'messageChannels',
settings: {
@@ -536,6 +553,7 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({
description: 'Messages from the channel.',
icon: 'IconMessage',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'messageChannelMessageAssociation',
targetFieldName: 'messageChannel',
settings: {
@@ -558,6 +576,7 @@ export const buildMessageChannelStandardFlatFieldMetadatas = ({
description: 'Message Folders',
icon: 'IconFolder',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'messageFolder',
targetFieldName: 'messageChannel',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-folder-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-folder-standard-flat-field-metadata.util.ts
index 42cd96bf42e..39b580c7917 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-folder-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-folder-standard-flat-field-metadata.util.ts
@@ -109,6 +109,7 @@ export const buildMessageFolderStandardFlatFieldMetadatas = ({
description: 'Folder name',
icon: 'IconFolder',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -125,6 +126,7 @@ export const buildMessageFolderStandardFlatFieldMetadatas = ({
description: 'Sync Cursor',
icon: 'IconHash',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -141,6 +143,7 @@ export const buildMessageFolderStandardFlatFieldMetadatas = ({
description: 'Is Sent Folder',
icon: 'IconCheck',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: false,
},
standardObjectMetadataRelatedEntityIds,
@@ -158,6 +161,7 @@ export const buildMessageFolderStandardFlatFieldMetadatas = ({
description: 'Is Synced',
icon: 'IconCheck',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: false,
},
standardObjectMetadataRelatedEntityIds,
@@ -175,6 +179,7 @@ export const buildMessageFolderStandardFlatFieldMetadatas = ({
description: 'Parent Folder ID',
icon: 'IconFolder',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -191,6 +196,7 @@ export const buildMessageFolderStandardFlatFieldMetadatas = ({
description: 'External ID',
icon: 'IconHash',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -207,6 +213,7 @@ export const buildMessageFolderStandardFlatFieldMetadatas = ({
description: 'Pending action for folder sync',
icon: 'IconReload',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: "'NONE'",
options: [
{
@@ -234,6 +241,7 @@ export const buildMessageFolderStandardFlatFieldMetadatas = ({
description: 'Message Channel',
icon: 'IconMessage',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'messageChannel',
targetFieldName: 'messageFolders',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-participant-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-participant-standard-flat-field-metadata.util.ts
index 6939554f8b0..ffba0fc095d 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-participant-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-participant-standard-flat-field-metadata.util.ts
@@ -113,6 +113,7 @@ export const buildMessageParticipantStandardFlatFieldMetadatas = ({
description: 'Role',
icon: 'IconAt',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: `'${MessageParticipantRole.FROM}'`,
options: [
{
@@ -156,6 +157,7 @@ export const buildMessageParticipantStandardFlatFieldMetadatas = ({
description: 'Handle',
icon: 'IconAt',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -172,6 +174,7 @@ export const buildMessageParticipantStandardFlatFieldMetadatas = ({
description: 'Display Name',
icon: 'IconUser',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -189,6 +192,7 @@ export const buildMessageParticipantStandardFlatFieldMetadatas = ({
description: 'Message',
icon: 'IconMessage',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'message',
targetFieldName: 'messageParticipants',
settings: {
@@ -213,6 +217,7 @@ export const buildMessageParticipantStandardFlatFieldMetadatas = ({
description: 'Person',
icon: 'IconUser',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'person',
targetFieldName: 'messageParticipants',
settings: {
@@ -237,6 +242,7 @@ export const buildMessageParticipantStandardFlatFieldMetadatas = ({
description: 'Workspace member',
icon: 'IconCircleUser',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'workspaceMember',
targetFieldName: 'messageParticipants',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-standard-flat-field-metadata.util.ts
index a9a041ed8bb..59f95f28570 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-standard-flat-field-metadata.util.ts
@@ -109,6 +109,7 @@ export const buildMessageStandardFlatFieldMetadatas = ({
description: 'Message id from the message header',
icon: 'IconHash',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -125,6 +126,7 @@ export const buildMessageStandardFlatFieldMetadatas = ({
description: 'Message Direction',
icon: 'IconDirection',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: "'INCOMING'",
options: [
{ value: 'INCOMING', label: 'Incoming', position: 0, color: 'green' },
@@ -146,6 +148,7 @@ export const buildMessageStandardFlatFieldMetadatas = ({
description: 'Subject',
icon: 'IconMessage',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -162,6 +165,7 @@ export const buildMessageStandardFlatFieldMetadatas = ({
description: 'Text',
icon: 'IconMessage',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -178,6 +182,7 @@ export const buildMessageStandardFlatFieldMetadatas = ({
description: 'The date the message was received',
icon: 'IconCalendar',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -195,6 +200,7 @@ export const buildMessageStandardFlatFieldMetadatas = ({
description: 'Message Thread Id',
icon: 'IconHash',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'messageThread',
targetFieldName: 'messages',
settings: {
@@ -219,6 +225,7 @@ export const buildMessageStandardFlatFieldMetadatas = ({
description: 'Message Participants',
icon: 'IconUserCircle',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'messageParticipant',
targetFieldName: 'message',
settings: {
@@ -241,6 +248,7 @@ export const buildMessageStandardFlatFieldMetadatas = ({
description: 'Messages from the channel.',
icon: 'IconMessage',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'messageChannelMessageAssociation',
targetFieldName: 'message',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-thread-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-thread-standard-flat-field-metadata.util.ts
index 77f92889056..bc15e555f8d 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-thread-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-message-thread-standard-flat-field-metadata.util.ts
@@ -109,6 +109,7 @@ export const buildMessageThreadStandardFlatFieldMetadatas = ({
description: 'Messages from the thread.',
icon: 'IconMessage',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'message',
targetFieldName: 'messageThread',
settings: {
@@ -131,6 +132,7 @@ export const buildMessageThreadStandardFlatFieldMetadatas = ({
description: 'Messages from the channel.',
icon: 'IconMessage',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'messageChannelMessageAssociation',
targetFieldName: 'messageThread',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-note-target-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-note-target-standard-flat-field-metadata.util.ts
index 7a94f3c02e8..39ea8f02c53 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-note-target-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-note-target-standard-flat-field-metadata.util.ts
@@ -119,6 +119,7 @@ export const buildNoteTargetStandardFlatFieldMetadatas = ({
description: 'NoteTarget note',
icon: 'IconNotes',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'note',
targetFieldName: 'noteTargets',
settings: {
@@ -143,6 +144,7 @@ export const buildNoteTargetStandardFlatFieldMetadatas = ({
description: 'NoteTarget person',
icon: 'IconUser',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'person',
targetFieldName: 'noteTargets',
settings: {
@@ -167,6 +169,7 @@ export const buildNoteTargetStandardFlatFieldMetadatas = ({
description: 'NoteTarget company',
icon: 'IconBuildingSkyscraper',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'company',
targetFieldName: 'noteTargets',
settings: {
@@ -191,6 +194,7 @@ export const buildNoteTargetStandardFlatFieldMetadatas = ({
description: 'NoteTarget opportunity',
icon: 'IconTargetArrow',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'opportunity',
targetFieldName: 'noteTargets',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-task-target-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-task-target-standard-flat-field-metadata.util.ts
index 0e51740b3e5..016cdbae49a 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-task-target-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-task-target-standard-flat-field-metadata.util.ts
@@ -119,6 +119,7 @@ export const buildTaskTargetStandardFlatFieldMetadatas = ({
description: 'TaskTarget task',
icon: 'IconCheckbox',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'task',
targetFieldName: 'taskTargets',
settings: {
@@ -143,6 +144,7 @@ export const buildTaskTargetStandardFlatFieldMetadatas = ({
description: 'TaskTarget person',
icon: 'IconUser',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'person',
targetFieldName: 'taskTargets',
settings: {
@@ -167,6 +169,7 @@ export const buildTaskTargetStandardFlatFieldMetadatas = ({
description: 'TaskTarget company',
icon: 'IconBuildingSkyscraper',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'company',
targetFieldName: 'taskTargets',
settings: {
@@ -191,6 +194,7 @@ export const buildTaskTargetStandardFlatFieldMetadatas = ({
description: 'TaskTarget opportunity',
icon: 'IconTargetArrow',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'opportunity',
targetFieldName: 'taskTargets',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-timeline-activity-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-timeline-activity-standard-flat-field-metadata.util.ts
index 4f31c566292..6371da19f07 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-timeline-activity-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-timeline-activity-standard-flat-field-metadata.util.ts
@@ -116,6 +116,7 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({
description: 'Creation date',
icon: 'IconCalendar',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: 'now',
},
standardObjectMetadataRelatedEntityIds,
@@ -133,6 +134,7 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({
description: 'Event name',
icon: 'IconAbc',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -149,6 +151,7 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({
description: 'Json value for event details',
icon: 'IconListDetails',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -165,6 +168,7 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({
description: 'Cached record name',
icon: 'IconAbc',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -181,6 +185,7 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({
description: 'Linked Record id',
icon: 'IconAbc',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -197,6 +202,7 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({
description: 'Linked Object Metadata Id',
icon: 'IconAbc',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -216,6 +222,7 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({
description: 'Event workspace member',
icon: 'IconCircleUser',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'workspaceMember',
targetFieldName: 'timelineActivities',
settings: {
@@ -240,6 +247,7 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({
description: 'Event person',
icon: 'IconUser',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'person',
targetFieldName: 'timelineActivities',
settings: {
@@ -264,6 +272,7 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({
description: 'Event company',
icon: 'IconBuildingSkyscraper',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'company',
targetFieldName: 'timelineActivities',
settings: {
@@ -288,6 +297,7 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({
description: 'Event opportunity',
icon: 'IconTargetArrow',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'opportunity',
targetFieldName: 'timelineActivities',
settings: {
@@ -312,6 +322,7 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({
description: 'Event note',
icon: 'IconTargetArrow',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'note',
targetFieldName: 'timelineActivities',
settings: {
@@ -336,6 +347,7 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({
description: 'Event task',
icon: 'IconTargetArrow',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'task',
targetFieldName: 'timelineActivities',
settings: {
@@ -360,6 +372,7 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({
description: 'Event workflow',
icon: 'IconTargetArrow',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'workflow',
targetFieldName: 'timelineActivities',
settings: {
@@ -384,6 +397,7 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({
description: 'Event workflow version',
icon: 'IconTargetArrow',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'workflowVersion',
targetFieldName: 'timelineActivities',
settings: {
@@ -408,6 +422,7 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({
description: 'Event workflow run',
icon: 'IconTargetArrow',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'workflowRun',
targetFieldName: 'timelineActivities',
settings: {
@@ -432,6 +447,7 @@ export const buildTimelineActivityStandardFlatFieldMetadatas = ({
description: 'Event dashboard',
icon: 'IconTargetArrow',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'dashboard',
targetFieldName: 'timelineActivities',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-automated-trigger-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-automated-trigger-standard-flat-field-metadata.util.ts
index 772d730fb1b..705639b44d2 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-automated-trigger-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-automated-trigger-standard-flat-field-metadata.util.ts
@@ -112,6 +112,7 @@ export const buildWorkflowAutomatedTriggerStandardFlatFieldMetadatas = ({
description: 'The workflow automated trigger type',
icon: 'IconSettingsAutomation',
isNullable: false,
+ isUIReadOnly: true,
options: [
{
value: 'DATABASE_EVENT',
@@ -137,6 +138,7 @@ export const buildWorkflowAutomatedTriggerStandardFlatFieldMetadatas = ({
description: 'The workflow automated trigger settings',
icon: 'IconSettings',
isNullable: false,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -154,6 +156,7 @@ export const buildWorkflowAutomatedTriggerStandardFlatFieldMetadatas = ({
description: 'WorkflowAutomatedTrigger workflow',
icon: 'IconSettingsAutomation',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'workflow',
targetFieldName: 'automatedTriggers',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-run-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-run-standard-flat-field-metadata.util.ts
index 989f8a2912b..ae624e2e8b6 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-run-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-run-standard-flat-field-metadata.util.ts
@@ -111,6 +111,7 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({
description: 'Name of the workflow run',
icon: 'IconSettingsAutomation',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -127,6 +128,7 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({
description: 'Workflow run enqueued at',
icon: 'IconHistory',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -143,6 +145,7 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({
description: 'Workflow run started at',
icon: 'IconHistory',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -159,6 +162,7 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({
description: 'Workflow run ended at',
icon: 'IconHistory',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -175,6 +179,7 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({
description: 'Workflow run status',
icon: 'IconStatusChange',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: "'NOT_STARTED'",
options: [
{
@@ -206,6 +211,7 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({
description: 'The executor of the workflow',
icon: 'IconCreativeCommonsSa',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: {
source: "'MANUAL'",
name: "'System'",
@@ -227,6 +233,7 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({
description: 'State of the workflow run',
icon: 'IconHierarchy2',
isNullable: false,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -243,6 +250,7 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({
description: 'Context of the workflow run',
icon: 'IconHierarchy2',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -259,6 +267,7 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({
description: 'Output of the workflow run',
icon: 'IconHierarchy2',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -276,6 +285,7 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({
icon: 'IconHierarchy2',
isSystem: true,
isNullable: false,
+ isUIReadOnly: true,
defaultValue: 0,
},
standardObjectMetadataRelatedEntityIds,
@@ -294,6 +304,7 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({
icon: 'IconUser',
isSystem: true,
isNullable: true,
+ isUIReadOnly: true,
settings: {
generatedType: 'STORED',
asExpression: getTsVectorColumnExpressionFromFields(
@@ -317,6 +328,7 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({
description: 'Workflow version linked to the run.',
icon: 'IconVersions',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'workflowVersion',
targetFieldName: 'runs',
settings: {
@@ -341,6 +353,7 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({
description: 'Workflow linked to the run.',
icon: 'IconSettingsAutomation',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'workflow',
targetFieldName: 'runs',
settings: {
@@ -366,6 +379,7 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({
icon: 'IconHeart',
isSystem: true,
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'favorite',
targetFieldName: 'workflowRun',
settings: {
@@ -389,6 +403,7 @@ export const buildWorkflowRunStandardFlatFieldMetadatas = ({
icon: 'IconTimelineEvent',
isSystem: true,
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'timelineActivity',
targetFieldName: 'targetWorkflowRun',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-version-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-version-standard-flat-field-metadata.util.ts
index 1010f5d0ad1..594e0f05c40 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-version-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workflow-version-standard-flat-field-metadata.util.ts
@@ -114,6 +114,7 @@ export const buildWorkflowVersionStandardFlatFieldMetadatas = ({
description: 'The workflow version name',
icon: 'IconSettingsAutomation',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -130,6 +131,7 @@ export const buildWorkflowVersionStandardFlatFieldMetadatas = ({
description: 'Json object to provide trigger',
icon: 'IconSettingsAutomation',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -146,6 +148,7 @@ export const buildWorkflowVersionStandardFlatFieldMetadatas = ({
description: 'Json object to provide steps',
icon: 'IconSettingsAutomation',
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -162,6 +165,7 @@ export const buildWorkflowVersionStandardFlatFieldMetadatas = ({
description: 'The workflow version status',
icon: 'IconStatusChange',
isNullable: false,
+ isUIReadOnly: true,
defaultValue: "'DRAFT'",
options: [
{ value: 'DRAFT', label: 'Draft', position: 0, color: 'yellow' },
@@ -191,6 +195,7 @@ export const buildWorkflowVersionStandardFlatFieldMetadatas = ({
icon: 'IconHierarchy2',
isSystem: true,
isNullable: false,
+ isUIReadOnly: true,
defaultValue: 0,
},
standardObjectMetadataRelatedEntityIds,
@@ -209,6 +214,7 @@ export const buildWorkflowVersionStandardFlatFieldMetadatas = ({
icon: 'IconUser',
isSystem: true,
isNullable: true,
+ isUIReadOnly: true,
settings: {
generatedType: 'STORED',
asExpression: getTsVectorColumnExpressionFromFields(
@@ -232,6 +238,7 @@ export const buildWorkflowVersionStandardFlatFieldMetadatas = ({
description: 'WorkflowVersion workflow',
icon: 'IconSettingsAutomation',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'workflow',
targetFieldName: 'versions',
settings: {
@@ -256,6 +263,7 @@ export const buildWorkflowVersionStandardFlatFieldMetadatas = ({
description: 'Workflow runs linked to the version.',
icon: 'IconRun',
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'workflowRun',
targetFieldName: 'workflowVersion',
settings: {
@@ -279,6 +287,7 @@ export const buildWorkflowVersionStandardFlatFieldMetadatas = ({
icon: 'IconHeart',
isSystem: true,
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'favorite',
targetFieldName: 'workflowVersion',
settings: {
@@ -302,6 +311,7 @@ export const buildWorkflowVersionStandardFlatFieldMetadatas = ({
icon: 'IconTimelineEvent',
isSystem: true,
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'timelineActivity',
targetFieldName: 'targetWorkflowVersion',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workspace-member-standard-flat-field-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workspace-member-standard-flat-field-metadata.util.ts
index b62679d886f..2d5006172a5 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workspace-member-standard-flat-field-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/field-metadata/compute-workspace-member-standard-flat-field-metadata.util.ts
@@ -118,6 +118,7 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
icon: 'IconHierarchy2',
isSystem: true,
isNullable: false,
+ isUIReadOnly: true,
defaultValue: 0,
},
standardObjectMetadataRelatedEntityIds,
@@ -135,6 +136,7 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
description: 'Workspace member name',
icon: 'IconCircleUser',
isNullable: false,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -152,6 +154,7 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
icon: 'IconColorSwatch',
isSystem: true,
isNullable: false,
+ isUIReadOnly: true,
defaultValue: "'System'",
},
standardObjectMetadataRelatedEntityIds,
@@ -170,6 +173,7 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
icon: 'IconLanguage',
isSystem: true,
isNullable: false,
+ isUIReadOnly: true,
defaultValue: "'en'",
},
standardObjectMetadataRelatedEntityIds,
@@ -188,6 +192,7 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
icon: 'IconFileUpload',
isSystem: true,
isNullable: true,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -205,6 +210,7 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
icon: 'IconMail',
isSystem: true,
isNullable: true,
+ isUIReadOnly: true,
isUnique: true,
},
standardObjectMetadataRelatedEntityIds,
@@ -223,6 +229,7 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
icon: 'IconCalendar',
isSystem: true,
isNullable: false,
+ isUIReadOnly: true,
defaultValue: 7,
settings: {
dataType: NumberDataType.INT,
@@ -244,6 +251,7 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
icon: 'IconCircleUsers',
isSystem: true,
isNullable: false,
+ isUIReadOnly: true,
},
standardObjectMetadataRelatedEntityIds,
dependencyFlatEntityMaps,
@@ -261,6 +269,7 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
icon: 'IconTimezone',
isSystem: true,
isNullable: false,
+ isUIReadOnly: true,
defaultValue: "'system'",
},
standardObjectMetadataRelatedEntityIds,
@@ -279,6 +288,7 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
icon: 'IconCalendarEvent',
isSystem: true,
isNullable: false,
+ isUIReadOnly: true,
defaultValue: "'SYSTEM'",
options: [
{ value: 'SYSTEM', label: 'System', position: 0, color: 'turquoise' },
@@ -313,6 +323,7 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
icon: 'IconClock2',
isSystem: true,
isNullable: false,
+ isUIReadOnly: true,
defaultValue: "'SYSTEM'",
options: [
{ value: 'SYSTEM', label: 'System', position: 0, color: 'sky' },
@@ -336,6 +347,7 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
icon: 'IconNumbers',
isSystem: true,
isNullable: false,
+ isUIReadOnly: true,
defaultValue: `'${WorkspaceMemberNumberFormatEnum.SYSTEM}'`,
options: [
{
@@ -386,6 +398,7 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
icon: 'IconUser',
isSystem: true,
isNullable: true,
+ isUIReadOnly: true,
settings: {
generatedType: 'STORED',
asExpression: getTsVectorColumnExpressionFromFields(
@@ -409,6 +422,7 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
description: 'Tasks assigned to the workspace member',
icon: 'IconCheckbox',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'task',
targetFieldName: 'assignee',
settings: {
@@ -431,6 +445,7 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
description: 'Favorites linked to the workspace member',
icon: 'IconHeart',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'favorite',
targetFieldName: 'forWorkspaceMember',
settings: {
@@ -453,6 +468,7 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
description: 'Account owner for companies',
icon: 'IconBriefcase',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'company',
targetFieldName: 'accountOwner',
settings: {
@@ -475,6 +491,7 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
description: 'Connected accounts',
icon: 'IconAt',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'connectedAccount',
targetFieldName: 'accountOwner',
settings: {
@@ -497,6 +514,7 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
description: 'Message Participants',
icon: 'IconUserCircle',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'messageParticipant',
targetFieldName: 'workspaceMember',
settings: {
@@ -519,6 +537,7 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
description: 'Blocklisted handles',
icon: 'IconForbid2',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'blocklist',
targetFieldName: 'workspaceMember',
settings: {
@@ -541,6 +560,7 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
description: 'Calendar Event Participants',
icon: 'IconCalendar',
isNullable: false,
+ isUIReadOnly: true,
targetObjectName: 'calendarEventParticipant',
targetFieldName: 'workspaceMember',
settings: {
@@ -564,6 +584,7 @@ export const buildWorkspaceMemberStandardFlatFieldMetadatas = ({
icon: 'IconTimelineEvent',
isSystem: true,
isNullable: true,
+ isUIReadOnly: true,
targetObjectName: 'timelineActivity',
targetFieldName: 'workspaceMember',
settings: {
diff --git a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/create-standard-flat-object-metadata.util.ts b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/create-standard-flat-object-metadata.util.ts
index f3845053c22..6321cdb74e0 100644
--- a/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/create-standard-flat-object-metadata.util.ts
+++ b/packages/twenty-server/src/engine/workspace-manager/twenty-standard-application/utils/object-metadata/create-standard-flat-object-metadata.util.ts
@@ -175,7 +175,6 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = {
icon: 'IconCalendar',
isSystem: true,
isAuditLogged: false,
- isUIReadOnly: true,
labelIdentifierFieldMetadataName: 'title',
},
workspaceId,
@@ -777,7 +776,6 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = {
icon: 'IconHistoryToggle',
isSystem: true,
isAuditLogged: false,
- isUIReadOnly: true,
labelIdentifierFieldMetadataName: 'name',
},
workspaceId,
@@ -808,7 +806,6 @@ export const STANDARD_FLAT_OBJECT_METADATA_BUILDERS_BY_OBJECT_NAME = {
description: 'A workflow version',
icon: 'IconVersions',
isSystem: true,
- isUIReadOnly: true,
labelIdentifierFieldMetadataName: 'name',
},
workspaceId,
diff --git a/packages/twenty-server/src/modules/attachment/standard-objects/attachment.workspace-entity.ts b/packages/twenty-server/src/modules/attachment/standard-objects/attachment.workspace-entity.ts
index 510543ce1cc..cfb6a4384f1 100644
--- a/packages/twenty-server/src/modules/attachment/standard-objects/attachment.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/attachment/standard-objects/attachment.workspace-entity.ts
@@ -50,6 +50,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Attachment name`,
icon: 'IconFileUpload',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
name: string | null;
@@ -60,6 +61,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Attachment full path`,
icon: 'IconLink',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
fullPath: string | null;
@@ -70,6 +72,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Attachment type (deprecated - use fileCategory)`,
icon: 'IconList',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
@WorkspaceIsDeprecated()
type: string | null;
@@ -132,6 +135,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
],
defaultValue: "'OTHER'",
})
+ @WorkspaceIsFieldUIReadOnly()
fileCategory: string;
@WorkspaceField({
@@ -154,6 +158,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'authoredAttachments',
onDelete: RelationOnDeleteAction.SET_NULL,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
@WorkspaceIsDeprecated()
author: Relation | null;
@@ -171,6 +176,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'attachments',
onDelete: RelationOnDeleteAction.SET_NULL,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
task: Relation | null;
@@ -187,6 +193,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'attachments',
onDelete: RelationOnDeleteAction.SET_NULL,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
note: Relation | null;
@@ -203,6 +210,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'attachments',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
person: Relation | null;
@@ -219,6 +227,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'attachments',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
company: Relation | null;
@@ -235,6 +244,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'attachments',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
opportunity: Relation | null;
@@ -251,6 +261,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'attachments',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
dashboard: Relation | null;
@@ -267,6 +278,7 @@ export class AttachmentWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'attachments',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
workflow: Relation | null;
diff --git a/packages/twenty-server/src/modules/blocklist/standard-objects/blocklist.workspace-entity.ts b/packages/twenty-server/src/modules/blocklist/standard-objects/blocklist.workspace-entity.ts
index 0508cee2b33..714f8b1a4fd 100644
--- a/packages/twenty-server/src/modules/blocklist/standard-objects/blocklist.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/blocklist/standard-objects/blocklist.workspace-entity.ts
@@ -8,6 +8,7 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
+import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
@@ -35,6 +36,7 @@ export class BlocklistWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Handle`,
icon: 'IconAt',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
handle: string | null;
@@ -48,6 +50,7 @@ export class BlocklistWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'blocklist',
onDelete: RelationOnDeleteAction.SET_NULL,
})
+ @WorkspaceIsFieldUIReadOnly()
workspaceMember: Relation;
@WorkspaceJoinColumn('workspaceMember')
diff --git a/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-channel-event-association.workspace-entity.ts b/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-channel-event-association.workspace-entity.ts
index 093df891e80..e94c4c71d5c 100644
--- a/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-channel-event-association.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-channel-event-association.workspace-entity.ts
@@ -8,6 +8,7 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
+import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator';
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
@@ -43,6 +44,7 @@ export class CalendarChannelEventAssociationWorkspaceEntity extends BaseWorkspac
description: msg`Event external ID`,
icon: 'IconCalendar',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
eventExternalId: string | null;
@@ -54,6 +56,7 @@ export class CalendarChannelEventAssociationWorkspaceEntity extends BaseWorkspac
description: msg`Recurring Event ID`,
icon: 'IconHistory',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
recurringEventExternalId: string | null;
@@ -68,6 +71,7 @@ export class CalendarChannelEventAssociationWorkspaceEntity extends BaseWorkspac
inverseSideFieldKey: 'calendarChannelEventAssociations',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
calendarChannel: Relation;
@WorkspaceJoinColumn('calendarChannel')
@@ -84,6 +88,7 @@ export class CalendarChannelEventAssociationWorkspaceEntity extends BaseWorkspac
inverseSideFieldKey: 'calendarChannelEventAssociations',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
calendarEvent: Relation;
@WorkspaceJoinColumn('calendarEvent')
diff --git a/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-channel.workspace-entity.ts b/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-channel.workspace-entity.ts
index 73ddfff6b3f..fc60eb69279 100644
--- a/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-channel.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-channel.workspace-entity.ts
@@ -10,6 +10,7 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
+import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator';
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
@@ -87,6 +88,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Handle`,
icon: 'IconAt',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
handle: string | null;
@@ -129,6 +131,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
},
],
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
syncStatus: CalendarChannelSyncStatus | null;
@@ -190,6 +193,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
],
defaultValue: `'${CalendarChannelSyncStage.PENDING_CONFIGURATION}'`,
})
+ @WorkspaceIsFieldUIReadOnly()
syncStage: CalendarChannelSyncStage;
@WorkspaceField({
@@ -214,6 +218,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
],
defaultValue: `'${CalendarChannelVisibility.SHARE_EVERYTHING}'`,
})
+ @WorkspaceIsFieldUIReadOnly()
visibility: string;
@WorkspaceField({
@@ -225,6 +230,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconUserCircle',
defaultValue: true,
})
+ @WorkspaceIsFieldUIReadOnly()
isContactAutoCreationEnabled: boolean;
@WorkspaceField({
@@ -262,6 +268,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
],
defaultValue: `'${CalendarChannelContactAutoCreationPolicy.AS_PARTICIPANT_AND_ORGANIZER}'`,
})
+ @WorkspaceIsFieldUIReadOnly()
contactAutoCreationPolicy: CalendarChannelContactAutoCreationPolicy;
@WorkspaceField({
@@ -272,6 +279,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconRefresh',
defaultValue: true,
})
+ @WorkspaceIsFieldUIReadOnly()
isSyncEnabled: boolean;
@WorkspaceField({
@@ -281,6 +289,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Sync Cursor. Used for syncing events from the calendar provider`,
icon: 'IconReload',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
syncCursor: string | null;
@@ -291,6 +300,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Last sync date`,
icon: 'IconHistory',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
syncedAt: string | null;
@@ -301,6 +311,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Sync stage started at`,
icon: 'IconHistory',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
syncStageStartedAt: string | null;
@@ -312,6 +323,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconX',
defaultValue: 0,
})
+ @WorkspaceIsFieldUIReadOnly()
throttleFailureCount: number;
@WorkspaceRelation({
@@ -324,6 +336,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'calendarChannels',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
connectedAccount: Relation;
@WorkspaceJoinColumn('connectedAccount')
@@ -339,6 +352,7 @@ export class CalendarChannelWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideTarget: () => CalendarChannelEventAssociationWorkspaceEntity,
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
calendarChannelEventAssociations: Relation<
CalendarChannelEventAssociationWorkspaceEntity[]
>;
diff --git a/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity.ts b/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity.ts
index 035a6cca0b0..8e1b00364a8 100644
--- a/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-event-participant.workspace-entity.ts
@@ -8,6 +8,7 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
+import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator';
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
@@ -47,6 +48,7 @@ export class CalendarEventParticipantWorkspaceEntity extends BaseWorkspaceEntity
description: msg`Handle`,
icon: 'IconMail',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
handle: string | null;
@@ -57,6 +59,7 @@ export class CalendarEventParticipantWorkspaceEntity extends BaseWorkspaceEntity
description: msg`Display Name`,
icon: 'IconUser',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
displayName: string | null;
@@ -68,6 +71,7 @@ export class CalendarEventParticipantWorkspaceEntity extends BaseWorkspaceEntity
icon: 'IconUser',
defaultValue: false,
})
+ @WorkspaceIsFieldUIReadOnly()
isOrganizer: boolean;
@WorkspaceField({
@@ -104,6 +108,7 @@ export class CalendarEventParticipantWorkspaceEntity extends BaseWorkspaceEntity
],
defaultValue: `'${CalendarEventParticipantResponseStatus.NEEDS_ACTION}'`,
})
+ @WorkspaceIsFieldUIReadOnly()
responseStatus: string;
@WorkspaceRelation({
@@ -116,6 +121,7 @@ export class CalendarEventParticipantWorkspaceEntity extends BaseWorkspaceEntity
inverseSideFieldKey: 'calendarEventParticipants',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
calendarEvent: Relation;
@WorkspaceJoinColumn('calendarEvent')
@@ -131,6 +137,7 @@ export class CalendarEventParticipantWorkspaceEntity extends BaseWorkspaceEntity
inverseSideFieldKey: 'calendarEventParticipants',
onDelete: RelationOnDeleteAction.SET_NULL,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
person: Relation | null;
@@ -147,6 +154,7 @@ export class CalendarEventParticipantWorkspaceEntity extends BaseWorkspaceEntity
inverseSideFieldKey: 'calendarEventParticipants',
onDelete: RelationOnDeleteAction.SET_NULL,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
workspaceMember: Relation | null;
diff --git a/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-event.workspace-entity.ts b/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-event.workspace-entity.ts
index 500e4ad968a..ed9210daafe 100644
--- a/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-event.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/calendar/common/standard-objects/calendar-event.workspace-entity.ts
@@ -12,9 +12,9 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
+import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator';
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
-import { WorkspaceIsObjectUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-object-ui-readonly.decorator';
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
import { CALENDAR_EVENT_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
@@ -34,7 +34,6 @@ import { CalendarEventParticipantWorkspaceEntity } from 'src/modules/calendar/co
})
@WorkspaceIsSystem()
@WorkspaceIsNotAuditLogged()
-@WorkspaceIsObjectUIReadOnly()
export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
@WorkspaceField({
standardId: CALENDAR_EVENT_STANDARD_FIELD_IDS.title,
@@ -43,6 +42,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Title`,
icon: 'IconH1',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
title: string | null;
@@ -54,6 +54,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconCalendarCancel',
defaultValue: false,
})
+ @WorkspaceIsFieldUIReadOnly()
isCanceled: boolean;
@WorkspaceField({
@@ -64,6 +65,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconHours24',
defaultValue: false,
})
+ @WorkspaceIsFieldUIReadOnly()
isFullDay: boolean;
@WorkspaceField({
@@ -73,6 +75,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Start Date`,
icon: 'IconCalendarClock',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
startsAt: string | null;
@@ -83,6 +86,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`End Date`,
icon: 'IconCalendarClock',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
endsAt: string | null;
@@ -93,6 +97,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Creation DateTime`,
icon: 'IconCalendarPlus',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
externalCreatedAt: string | null;
@@ -103,6 +108,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Update DateTime`,
icon: 'IconCalendarCog',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
externalUpdatedAt: string | null;
@@ -113,6 +119,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Description`,
icon: 'IconFileDescription',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
description: string | null;
@@ -123,6 +130,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Location`,
icon: 'IconMapPin',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
location: string | null;
@@ -133,6 +141,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`iCal UID`,
icon: 'IconKey',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
iCalUid: string | null;
@@ -143,6 +152,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Conference Solution`,
icon: 'IconScreenShare',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
conferenceSolution: string | null;
@@ -153,6 +163,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Meet Link`,
icon: 'IconLink',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
conferenceLink: LinksMetadata;
@@ -166,6 +177,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideTarget: () => CalendarChannelEventAssociationWorkspaceEntity,
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
calendarChannelEventAssociations: Relation<
CalendarChannelEventAssociationWorkspaceEntity[]
>;
@@ -179,6 +191,7 @@ export class CalendarEventWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideTarget: () => CalendarEventParticipantWorkspaceEntity,
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
calendarEventParticipants: Relation<
CalendarEventParticipantWorkspaceEntity[]
>;
diff --git a/packages/twenty-server/src/modules/connected-account/standard-objects/connected-account.workspace-entity.ts b/packages/twenty-server/src/modules/connected-account/standard-objects/connected-account.workspace-entity.ts
index edef1d09bf6..726a1e8f19a 100644
--- a/packages/twenty-server/src/modules/connected-account/standard-objects/connected-account.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/connected-account/standard-objects/connected-account.workspace-entity.ts
@@ -13,6 +13,7 @@ import { type ImapSmtpCaldavParams } from 'src/engine/core-modules/imap-smtp-cal
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
+import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
@@ -42,6 +43,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`The account handle (email, username, phone number, etc.)`,
icon: 'IconMail',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
handle: string | null;
@@ -53,6 +55,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconSettings',
defaultValue: `'${ConnectedAccountProvider.GOOGLE}'`,
})
+ @WorkspaceIsFieldUIReadOnly()
provider: ConnectedAccountProvider; // field metadata should be a SELECT
@WorkspaceField({
@@ -62,6 +65,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Messaging provider access token`,
icon: 'IconKey',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
accessToken: string | null;
@@ -72,6 +76,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Messaging provider refresh token`,
icon: 'IconKey',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
refreshToken: string | null;
@@ -82,6 +87,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Last credentials refreshed at`,
icon: 'IconHistory',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
lastCredentialsRefreshedAt: Date | null;
@@ -92,6 +98,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Last sync history ID`,
icon: 'IconHistory',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
lastSyncHistoryId: string | null;
@@ -102,6 +109,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Auth failed at`,
icon: 'IconX',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
authFailedAt: Date | null;
@@ -112,6 +120,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Handle Aliases`,
icon: 'IconMail',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
handleAliases: string | null;
@@ -122,6 +131,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Scopes`,
icon: 'IconSettings',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
scopes: string[] | null;
@@ -132,6 +142,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`JSON object containing custom connection parameters`,
icon: 'IconSettings',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
connectionParameters: ImapSmtpCaldavParams | null;
@@ -145,6 +156,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'connectedAccounts',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
accountOwner: Relation;
@WorkspaceJoinColumn('accountOwner')
@@ -159,6 +171,7 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideTarget: () => MessageChannelWorkspaceEntity,
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
messageChannels: Relation;
@WorkspaceRelation({
@@ -170,5 +183,6 @@ export class ConnectedAccountWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideTarget: () => CalendarChannelWorkspaceEntity,
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
calendarChannels: Relation;
}
diff --git a/packages/twenty-server/src/modules/favorite-folder/standard-objects/favorite-folder.workspace-entity.ts b/packages/twenty-server/src/modules/favorite-folder/standard-objects/favorite-folder.workspace-entity.ts
index a812cf90bb3..2d6e0af5b14 100644
--- a/packages/twenty-server/src/modules/favorite-folder/standard-objects/favorite-folder.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/favorite-folder/standard-objects/favorite-folder.workspace-entity.ts
@@ -8,11 +8,12 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
+import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
+import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
import { FAVORITE_FOLDER_STANDARD_FIELD_IDS } from 'src/engine/workspace-manager/workspace-sync-metadata/constants/standard-field-ids';
import { FavoriteWorkspaceEntity } from 'src/modules/favorite/standard-objects/favorite.workspace-entity';
-import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
@WorkspaceEntity({
standardId: STANDARD_OBJECT_IDS.favoriteFolder,
@@ -33,6 +34,7 @@ export class FavoriteFolderWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconList',
defaultValue: 0,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsSystem()
position: number;
@@ -43,6 +45,7 @@ export class FavoriteFolderWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Name of the favorite folder`,
icon: 'IconText',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
name: string | null;
@@ -56,5 +59,6 @@ export class FavoriteFolderWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideTarget: () => FavoriteWorkspaceEntity,
onDelete: RelationOnDeleteAction.SET_NULL,
})
+ @WorkspaceIsFieldUIReadOnly()
favorites: Relation;
}
diff --git a/packages/twenty-server/src/modules/favorite/standard-objects/favorite.workspace-entity.ts b/packages/twenty-server/src/modules/favorite/standard-objects/favorite.workspace-entity.ts
index 5fe50593bbc..40e229d7413 100644
--- a/packages/twenty-server/src/modules/favorite/standard-objects/favorite.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/favorite/standard-objects/favorite.workspace-entity.ts
@@ -10,6 +10,7 @@ import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-en
import { WorkspaceDynamicRelation } from 'src/engine/twenty-orm/decorators/workspace-dynamic-relation.decorator';
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
+import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
@@ -47,6 +48,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconList',
defaultValue: 0,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsSystem()
position: number;
@@ -61,6 +63,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideTarget: () => WorkspaceMemberWorkspaceEntity,
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
forWorkspaceMember: Relation;
@@ -77,6 +80,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'favorites',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
person: Relation | null;
@@ -93,6 +97,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'favorites',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
company: Relation | null;
@@ -109,6 +114,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'favorites',
onDelete: RelationOnDeleteAction.SET_NULL,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
favoriteFolder: Relation | null;
@@ -125,6 +131,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'favorites',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
opportunity: Relation | null;
@@ -141,6 +148,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'favorites',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
workflow: Relation | null;
@@ -157,6 +165,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'favorites',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
workflowVersion: Relation | null;
@@ -173,6 +182,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'favorites',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
workflowRun: Relation | null;
@@ -189,6 +199,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'favorites',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
task: Relation | null;
@@ -205,6 +216,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'favorites',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
note: Relation | null;
@@ -221,6 +233,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'favorites',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
dashboard: Relation | null;
@@ -234,6 +247,7 @@ export class FavoriteWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`ViewId`,
icon: 'IconView',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
viewId: string;
diff --git a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-channel-message-association.workspace-entity.ts b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-channel-message-association.workspace-entity.ts
index 98cc79b85bf..da250a22f93 100644
--- a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-channel-message-association.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-channel-message-association.workspace-entity.ts
@@ -1,6 +1,6 @@
import { msg } from '@lingui/core/macro';
-import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types';
import { STANDARD_OBJECT_IDS } from 'twenty-shared/metadata';
+import { FieldMetadataType, RelationOnDeleteAction } from 'twenty-shared/types';
import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfaces/relation-type.interface';
import { type Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/interfaces/relation.interface';
@@ -9,6 +9,7 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
import { WorkspaceIndex } from 'src/engine/twenty-orm/decorators/workspace-index.decorator';
+import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator';
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
@@ -47,6 +48,7 @@ export class MessageChannelMessageAssociationWorkspaceEntity extends BaseWorkspa
description: msg`Message id from the messaging provider`,
icon: 'IconHash',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
messageExternalId: string | null;
@@ -58,6 +60,7 @@ export class MessageChannelMessageAssociationWorkspaceEntity extends BaseWorkspa
description: msg`Thread id from the messaging provider`,
icon: 'IconHash',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
messageThreadExternalId: string | null;
@@ -83,6 +86,7 @@ export class MessageChannelMessageAssociationWorkspaceEntity extends BaseWorkspa
],
defaultValue: `'${MessageDirection.INCOMING}'`,
})
+ @WorkspaceIsFieldUIReadOnly()
direction: MessageDirection;
@WorkspaceRelation({
@@ -96,6 +100,7 @@ export class MessageChannelMessageAssociationWorkspaceEntity extends BaseWorkspa
inverseSideFieldKey: 'messageChannelMessageAssociations',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
messageChannel: Relation | null;
@@ -112,6 +117,7 @@ export class MessageChannelMessageAssociationWorkspaceEntity extends BaseWorkspa
inverseSideFieldKey: 'messageChannelMessageAssociations',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
message: Relation | null;
diff --git a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-channel.workspace-entity.ts b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-channel.workspace-entity.ts
index d2f4ce6d0d1..b722d28f6ed 100644
--- a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-channel.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-channel.workspace-entity.ts
@@ -10,6 +10,7 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
+import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator';
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
@@ -137,6 +138,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
],
defaultValue: `'${MessageChannelVisibility.SHARE_EVERYTHING}'`,
})
+ @WorkspaceIsFieldUIReadOnly()
visibility: string;
@WorkspaceField({
@@ -146,6 +148,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Handle`,
icon: 'IconAt',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
handle: string | null;
@@ -171,6 +174,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
],
defaultValue: `'${MessageChannelType.EMAIL}'`,
})
+ @WorkspaceIsFieldUIReadOnly()
type: string;
// TODO: Deprecate this field and migrate data to contactAutoCreationFor
@@ -182,6 +186,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconUserCircle',
defaultValue: true,
})
+ @WorkspaceIsFieldUIReadOnly()
isContactAutoCreationEnabled: boolean;
@WorkspaceField({
@@ -212,6 +217,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
],
defaultValue: `'${MessageChannelContactAutoCreationPolicy.SENT}'`,
})
+ @WorkspaceIsFieldUIReadOnly()
contactAutoCreationPolicy: MessageChannelContactAutoCreationPolicy;
@WorkspaceField({
@@ -236,6 +242,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
],
defaultValue: `'${MessageFolderImportPolicy.ALL_FOLDERS}'`,
})
+ @WorkspaceIsFieldUIReadOnly()
messageFolderImportPolicy: MessageFolderImportPolicy;
@WorkspaceField({
@@ -246,6 +253,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconBriefcase',
defaultValue: true,
})
+ @WorkspaceIsFieldUIReadOnly()
excludeNonProfessionalEmails: boolean;
@WorkspaceField({
@@ -256,6 +264,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconUsersGroup',
defaultValue: true,
})
+ @WorkspaceIsFieldUIReadOnly()
excludeGroupEmails: boolean;
@WorkspaceField({
@@ -286,6 +295,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
],
defaultValue: `'${MessageChannelPendingGroupEmailsAction.NONE}'`,
})
+ @WorkspaceIsFieldUIReadOnly()
pendingGroupEmailsAction: MessageChannelPendingGroupEmailsAction;
@WorkspaceField({
@@ -296,6 +306,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconRefresh',
defaultValue: true,
})
+ @WorkspaceIsFieldUIReadOnly()
isSyncEnabled: boolean;
@WorkspaceField({
@@ -305,6 +316,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Last sync cursor`,
icon: 'IconHistory',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
syncCursor: string | null;
@@ -315,6 +327,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Last sync date`,
icon: 'IconHistory',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
syncedAt: string | null;
@@ -357,6 +370,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
},
],
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
syncStatus: MessageChannelSyncStatus | null;
@@ -418,6 +432,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
],
defaultValue: `'${MessageChannelSyncStage.PENDING_CONFIGURATION}'`,
})
+ @WorkspaceIsFieldUIReadOnly()
syncStage: MessageChannelSyncStage;
@WorkspaceField({
@@ -427,6 +442,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Sync stage started at`,
icon: 'IconHistory',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
syncStageStartedAt: string | null;
@@ -438,6 +454,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconX',
defaultValue: 0,
})
+ @WorkspaceIsFieldUIReadOnly()
throttleFailureCount: number;
@WorkspaceRelation({
@@ -450,6 +467,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'messageChannels',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
connectedAccount: Relation;
@WorkspaceJoinColumn('connectedAccount')
@@ -465,6 +483,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideTarget: () => MessageChannelMessageAssociationWorkspaceEntity,
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
messageChannelMessageAssociations: Relation<
MessageChannelMessageAssociationWorkspaceEntity[]
@@ -479,6 +498,7 @@ export class MessageChannelWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideTarget: () => MessageFolderWorkspaceEntity,
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
messageFolders: Relation;
}
diff --git a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-folder.workspace-entity.ts b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-folder.workspace-entity.ts
index b031428e38c..e99c06d721a 100644
--- a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-folder.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-folder.workspace-entity.ts
@@ -11,6 +11,7 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
import { WorkspaceIndex } from 'src/engine/twenty-orm/decorators/workspace-index.decorator';
+import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator';
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
@@ -52,6 +53,7 @@ export class MessageFolderWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Folder name`,
icon: 'IconFolder',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
name: string | null;
@@ -65,6 +67,7 @@ export class MessageFolderWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'messageFolders',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
messageChannel: Relation;
@WorkspaceField({
@@ -74,6 +77,7 @@ export class MessageFolderWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Sync Cursor`,
icon: 'IconHash',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
syncCursor: string | null;
@@ -85,6 +89,7 @@ export class MessageFolderWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconCheck',
defaultValue: false,
})
+ @WorkspaceIsFieldUIReadOnly()
isSentFolder: boolean;
@WorkspaceField({
@@ -95,6 +100,7 @@ export class MessageFolderWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconCheck',
defaultValue: false,
})
+ @WorkspaceIsFieldUIReadOnly()
isSynced: boolean;
@WorkspaceField({
@@ -105,6 +111,7 @@ export class MessageFolderWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconFolder',
defaultValue: null,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
parentFolderId: string | null;
@@ -116,6 +123,7 @@ export class MessageFolderWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconHash',
defaultValue: null,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
externalId: string | null;
@@ -141,6 +149,7 @@ export class MessageFolderWorkspaceEntity extends BaseWorkspaceEntity {
],
defaultValue: `'${MessageFolderPendingSyncAction.NONE}'`,
})
+ @WorkspaceIsFieldUIReadOnly()
pendingSyncAction: MessageFolderPendingSyncAction;
@WorkspaceJoinColumn('messageChannel')
diff --git a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-participant.workspace-entity.ts b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-participant.workspace-entity.ts
index 3b435fddc3c..a372e2c0e45 100644
--- a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-participant.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-participant.workspace-entity.ts
@@ -12,6 +12,7 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
+import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator';
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
@@ -70,6 +71,7 @@ export class MessageParticipantWorkspaceEntity extends BaseWorkspaceEntity {
],
defaultValue: `'${MessageParticipantRole.FROM}'`,
})
+ @WorkspaceIsFieldUIReadOnly()
role: MessageParticipantRole;
@WorkspaceField({
@@ -79,6 +81,7 @@ export class MessageParticipantWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Handle`,
icon: 'IconAt',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
handle: string | null;
@@ -89,6 +92,7 @@ export class MessageParticipantWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Display Name`,
icon: 'IconUser',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
displayName: string | null;
@@ -102,6 +106,7 @@ export class MessageParticipantWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'messageParticipants',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
message: Relation;
@WorkspaceJoinColumn('message')
@@ -117,6 +122,7 @@ export class MessageParticipantWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'messageParticipants',
onDelete: RelationOnDeleteAction.SET_NULL,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
person: Relation | null;
@@ -133,6 +139,7 @@ export class MessageParticipantWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'messageParticipants',
onDelete: RelationOnDeleteAction.SET_NULL,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
workspaceMember: Relation | null;
diff --git a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-thread.workspace-entity.ts b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-thread.workspace-entity.ts
index e7926561552..c1708a286c9 100644
--- a/packages/twenty-server/src/modules/messaging/common/standard-objects/message-thread.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/messaging/common/standard-objects/message-thread.workspace-entity.ts
@@ -7,6 +7,7 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
+import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator';
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
@@ -36,6 +37,7 @@ export class MessageThreadWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideTarget: () => MessageWorkspaceEntity,
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
messages: Relation;
}
diff --git a/packages/twenty-server/src/modules/messaging/common/standard-objects/message.workspace-entity.ts b/packages/twenty-server/src/modules/messaging/common/standard-objects/message.workspace-entity.ts
index f34996a6af9..490a8adb031 100644
--- a/packages/twenty-server/src/modules/messaging/common/standard-objects/message.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/messaging/common/standard-objects/message.workspace-entity.ts
@@ -8,6 +8,7 @@ import { Relation } from 'src/engine/workspace-manager/workspace-sync-metadata/i
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
+import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator';
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
@@ -39,6 +40,7 @@ export class MessageWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Message id from the message header`,
icon: 'IconHash',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
headerMessageId: string | null;
@@ -49,6 +51,7 @@ export class MessageWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Subject`,
icon: 'IconMessage',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
subject: string | null;
@@ -59,6 +62,7 @@ export class MessageWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Text`,
icon: 'IconMessage',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
text: string | null;
@@ -69,6 +73,7 @@ export class MessageWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`The date the message was received`,
icon: 'IconCalendar',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
receivedAt: Date | null;
@@ -82,6 +87,7 @@ export class MessageWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'messages',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
messageThread: Relation | null;
@@ -97,6 +103,7 @@ export class MessageWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideTarget: () => MessageParticipantWorkspaceEntity,
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
messageParticipants: Relation;
@@ -109,6 +116,7 @@ export class MessageWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideTarget: () => MessageChannelMessageAssociationWorkspaceEntity,
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
messageChannelMessageAssociations: Relation<
MessageChannelMessageAssociationWorkspaceEntity[]
diff --git a/packages/twenty-server/src/modules/note/standard-objects/note-target.workspace-entity.ts b/packages/twenty-server/src/modules/note/standard-objects/note-target.workspace-entity.ts
index c66eaa82db6..e30c375e30f 100644
--- a/packages/twenty-server/src/modules/note/standard-objects/note-target.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/note/standard-objects/note-target.workspace-entity.ts
@@ -9,6 +9,7 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity
import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity';
import { WorkspaceDynamicRelation } from 'src/engine/twenty-orm/decorators/workspace-dynamic-relation.decorator';
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
+import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
@@ -41,6 +42,7 @@ export class NoteTargetWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'noteTargets',
onDelete: RelationOnDeleteAction.SET_NULL,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
note: Relation | null;
@@ -57,6 +59,7 @@ export class NoteTargetWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'noteTargets',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
person: Relation | null;
@@ -73,6 +76,7 @@ export class NoteTargetWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'noteTargets',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
company: Relation | null;
@@ -89,6 +93,7 @@ export class NoteTargetWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'noteTargets',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
opportunity: Relation | null;
diff --git a/packages/twenty-server/src/modules/task/standard-objects/task-target.workspace-entity.ts b/packages/twenty-server/src/modules/task/standard-objects/task-target.workspace-entity.ts
index c6c7f602651..d055436b8b2 100644
--- a/packages/twenty-server/src/modules/task/standard-objects/task-target.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/task/standard-objects/task-target.workspace-entity.ts
@@ -9,6 +9,7 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity
import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-entity';
import { WorkspaceDynamicRelation } from 'src/engine/twenty-orm/decorators/workspace-dynamic-relation.decorator';
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
+import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
@@ -41,6 +42,7 @@ export class TaskTargetWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'taskTargets',
onDelete: RelationOnDeleteAction.SET_NULL,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
task: Relation | null;
@@ -57,6 +59,7 @@ export class TaskTargetWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'taskTargets',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
person: Relation | null;
@@ -73,6 +76,7 @@ export class TaskTargetWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'taskTargets',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
company: Relation | null;
@@ -89,6 +93,7 @@ export class TaskTargetWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'taskTargets',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
opportunity: Relation | null;
diff --git a/packages/twenty-server/src/modules/timeline/constants/system-objects-with-timeline-activities.constant.ts b/packages/twenty-server/src/modules/timeline/constants/system-objects-with-timeline-activities.constant.ts
new file mode 100644
index 00000000000..6f5a6fbddb6
--- /dev/null
+++ b/packages/twenty-server/src/modules/timeline/constants/system-objects-with-timeline-activities.constant.ts
@@ -0,0 +1,4 @@
+export const SYSTEM_OBJECTS_WITH_TIMELINE_ACTIVITIES = [
+ 'noteTarget',
+ 'taskTarget',
+];
diff --git a/packages/twenty-server/src/modules/timeline/jobs/upsert-timeline-activity-from-internal-event.job.ts b/packages/twenty-server/src/modules/timeline/jobs/upsert-timeline-activity-from-internal-event.job.ts
index ce4f985c2c6..4e46f7643b8 100644
--- a/packages/twenty-server/src/modules/timeline/jobs/upsert-timeline-activity-from-internal-event.job.ts
+++ b/packages/twenty-server/src/modules/timeline/jobs/upsert-timeline-activity-from-internal-event.job.ts
@@ -8,6 +8,7 @@ import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queu
import { GlobalWorkspaceOrmManager } from 'src/engine/twenty-orm/global-workspace-datasource/global-workspace-orm.manager';
import { buildSystemAuthContext } from 'src/engine/twenty-orm/utils/build-system-auth-context.util';
import { WorkspaceEventBatch } from 'src/engine/workspace-event-emitter/types/workspace-event-batch.type';
+import { SYSTEM_OBJECTS_WITH_TIMELINE_ACTIVITIES } from 'src/modules/timeline/constants/system-objects-with-timeline-activities.constant';
import { TimelineActivityService } from 'src/modules/timeline/services/timeline-activity.service';
import { WorkspaceMemberWorkspaceEntity } from 'src/modules/workspace-member/standard-objects/workspace-member.workspace-entity';
@@ -28,8 +29,9 @@ export class UpsertTimelineActivityFromInternalEvent {
if (
workspaceEventBatch.objectMetadata.isSystem &&
- workspaceEventBatch.objectMetadata.nameSingular !== 'noteTarget' &&
- workspaceEventBatch.objectMetadata.nameSingular !== 'taskTarget'
+ !SYSTEM_OBJECTS_WITH_TIMELINE_ACTIVITIES.includes(
+ workspaceEventBatch.objectMetadata.nameSingular,
+ )
) {
return;
}
diff --git a/packages/twenty-server/src/modules/timeline/standard-objects/timeline-activity.workspace-entity.ts b/packages/twenty-server/src/modules/timeline/standard-objects/timeline-activity.workspace-entity.ts
index 606d72bb3b0..d79700c423d 100644
--- a/packages/twenty-server/src/modules/timeline/standard-objects/timeline-activity.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/timeline/standard-objects/timeline-activity.workspace-entity.ts
@@ -11,6 +11,7 @@ import { CustomWorkspaceEntity } from 'src/engine/twenty-orm/custom.workspace-en
import { WorkspaceDynamicRelation } from 'src/engine/twenty-orm/decorators/workspace-dynamic-relation.decorator';
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
+import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator';
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
@@ -50,6 +51,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconCalendar',
defaultValue: 'now',
})
+ @WorkspaceIsFieldUIReadOnly()
happensAt: Date;
@WorkspaceField({
@@ -59,6 +61,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Event name`,
icon: 'IconAbc',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
name: string | null;
@@ -69,6 +72,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Json value for event details`,
icon: 'IconListDetails',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
properties: JSON | null;
@@ -80,6 +84,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Cached record name`,
icon: 'IconAbc',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
linkedRecordCachedName: string | null;
@@ -90,6 +95,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Linked Record id`,
icon: 'IconAbc',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
linkedRecordId: string | null;
@@ -100,6 +106,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Linked Object Metadata Id`,
icon: 'IconAbc',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
linkedObjectMetadataId: string | null;
@@ -114,6 +121,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'timelineActivities',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
workspaceMember: Relation | null;
@@ -132,6 +140,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
isMorphRelation: true,
morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
targetPerson: Relation | null;
@@ -150,6 +159,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
isMorphRelation: true,
morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
targetCompany: Relation | null;
@@ -168,6 +178,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
isMorphRelation: true,
morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
targetOpportunity: Relation | null;
@@ -186,6 +197,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
isMorphRelation: true,
morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
targetNote: Relation | null;
@@ -204,6 +216,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
isMorphRelation: true,
morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
targetTask: Relation | null;
@@ -222,6 +235,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
isMorphRelation: true,
morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
targetWorkflow: Relation | null;
@@ -240,6 +254,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
isMorphRelation: true,
morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
targetWorkflowVersion: Relation | null;
@@ -258,6 +273,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
isMorphRelation: true,
morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
targetWorkflowRun: Relation | null;
@@ -276,6 +292,7 @@ export class TimelineActivityWorkspaceEntity extends BaseWorkspaceEntity {
isMorphRelation: true,
morphId: TIMELINE_ACTIVITY_STANDARD_FIELD_IDS.targetMorphId,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
targetDashboard: Relation | null;
diff --git a/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-automated-trigger.workspace-entity.ts b/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-automated-trigger.workspace-entity.ts
index 0c67573d383..be28f75f5f7 100644
--- a/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-automated-trigger.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-automated-trigger.workspace-entity.ts
@@ -8,6 +8,7 @@ import { RelationType } from 'src/engine/metadata-modules/field-metadata/interfa
import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity';
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
+import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
@@ -53,6 +54,7 @@ export class WorkflowAutomatedTriggerWorkspaceEntity extends BaseWorkspaceEntity
},
],
})
+ @WorkspaceIsFieldUIReadOnly()
type: AutomatedTriggerType;
@WorkspaceField({
@@ -61,6 +63,7 @@ export class WorkflowAutomatedTriggerWorkspaceEntity extends BaseWorkspaceEntity
label: msg`Settings`,
description: msg`The workflow automated trigger settings`,
})
+ @WorkspaceIsFieldUIReadOnly()
settings: AutomatedTriggerSettings;
@WorkspaceRelation({
@@ -73,6 +76,7 @@ export class WorkflowAutomatedTriggerWorkspaceEntity extends BaseWorkspaceEntity
inverseSideFieldKey: 'automatedTriggers',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
workflow: Relation;
@WorkspaceJoinColumn('workflow')
diff --git a/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-run.workspace-entity.ts b/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-run.workspace-entity.ts
index cbe2e01afb8..2e659b88b43 100644
--- a/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-run.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-run.workspace-entity.ts
@@ -18,9 +18,9 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
import { WorkspaceFieldIndex } from 'src/engine/twenty-orm/decorators/workspace-field-index.decorator';
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
+import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
import { WorkspaceIsNotAuditLogged } from 'src/engine/twenty-orm/decorators/workspace-is-not-audit-logged.decorator';
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
-import { WorkspaceIsObjectUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-object-ui-readonly.decorator';
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
@@ -94,7 +94,6 @@ export const SEARCH_FIELDS_FOR_WORKFLOW_RUNS: FieldTypeAndNameMetadata[] = [
})
@WorkspaceIsSystem()
@WorkspaceIsNotAuditLogged()
-@WorkspaceIsObjectUIReadOnly()
export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
@WorkspaceField({
standardId: WORKFLOW_RUN_STANDARD_FIELD_IDS.name,
@@ -103,6 +102,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Name of the workflow run`,
icon: 'IconSettingsAutomation',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
name: string | null;
@@ -113,6 +113,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Workflow run enqueued at`,
icon: 'IconHistory',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
enqueuedAt: Date | null;
@@ -123,6 +124,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Workflow run started at`,
icon: 'IconHistory',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
startedAt: string | null;
@@ -133,6 +135,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Workflow run ended at`,
icon: 'IconHistory',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
endedAt: string | null;
@@ -188,6 +191,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
],
defaultValue: "'NOT_STARTED'",
})
+ @WorkspaceIsFieldUIReadOnly()
status: WorkflowRunStatus;
@WorkspaceField({
@@ -197,6 +201,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconCreativeCommonsSa',
description: msg`The executor of the workflow`,
})
+ @WorkspaceIsFieldUIReadOnly()
createdBy: ActorMetadata;
@WorkspaceField({
@@ -206,6 +211,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`State of the workflow run`,
icon: 'IconHierarchy2',
})
+ @WorkspaceIsFieldUIReadOnly()
state: WorkflowRunState;
@WorkspaceField({
@@ -216,6 +222,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconHierarchy2',
defaultValue: 0,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsSystem()
position: number;
@@ -230,6 +237,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
SEARCH_FIELDS_FOR_WORKFLOW_RUNS,
),
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
@WorkspaceIsSystem()
@WorkspaceFieldIndex({ indexType: IndexType.GIN })
@@ -246,6 +254,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'runs',
onDelete: RelationOnDeleteAction.SET_NULL,
})
+ @WorkspaceIsFieldUIReadOnly()
workflowVersion: Relation;
@WorkspaceJoinColumn('workflowVersion')
@@ -261,6 +270,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'runs',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
workflow: Relation;
@WorkspaceJoinColumn('workflow')
@@ -275,6 +285,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideTarget: () => FavoriteWorkspaceEntity,
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsSystem()
favorites: Relation;
@@ -287,6 +298,7 @@ export class WorkflowRunWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'targetWorkflowRun',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsSystem()
timelineActivities: Relation;
}
diff --git a/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-version.workspace-entity.ts b/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-version.workspace-entity.ts
index fc7b33e3c66..e82c860de63 100644
--- a/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-version.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/workflow/common/standard-objects/workflow-version.workspace-entity.ts
@@ -12,8 +12,8 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
import { WorkspaceFieldIndex } from 'src/engine/twenty-orm/decorators/workspace-field-index.decorator';
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
+import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
-import { WorkspaceIsObjectUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-object-ui-readonly.decorator';
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
import { WorkspaceJoinColumn } from 'src/engine/twenty-orm/decorators/workspace-join-column.decorator';
import { WorkspaceRelation } from 'src/engine/twenty-orm/decorators/workspace-relation.decorator';
@@ -81,7 +81,6 @@ export const SEARCH_FIELDS_FOR_WORKFLOW_VERSIONS: FieldTypeAndNameMetadata[] = [
labelIdentifierStandardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.name,
})
@WorkspaceIsSystem()
-@WorkspaceIsObjectUIReadOnly()
export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
@WorkspaceField({
standardId: WORKFLOW_VERSION_STANDARD_FIELD_IDS.name,
@@ -90,6 +89,7 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`The workflow version name`,
icon: 'IconSettingsAutomation',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
name: string | null;
@@ -100,6 +100,7 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Json object to provide trigger`,
icon: 'IconSettingsAutomation',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
trigger: WorkflowTrigger | null;
@@ -110,6 +111,7 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Json object to provide steps`,
icon: 'IconSettingsAutomation',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
steps: WorkflowAction[] | null;
@@ -122,6 +124,7 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
options: WorkflowVersionStatusOptions,
defaultValue: "'DRAFT'",
})
+ @WorkspaceIsFieldUIReadOnly()
status: WorkflowVersionStatus;
@WorkspaceField({
@@ -132,6 +135,7 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconHierarchy2',
defaultValue: 0,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsSystem()
position: number;
@@ -146,6 +150,7 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
SEARCH_FIELDS_FOR_WORKFLOW_VERSIONS,
),
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
@WorkspaceIsSystem()
@WorkspaceFieldIndex({ indexType: IndexType.GIN })
@@ -162,6 +167,7 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'versions',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
workflow: Relation;
@@ -177,6 +183,7 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideTarget: () => WorkflowRunWorkspaceEntity,
onDelete: RelationOnDeleteAction.SET_NULL,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
runs: Relation;
@@ -189,6 +196,7 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideTarget: () => FavoriteWorkspaceEntity,
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsSystem()
favorites: Relation;
@@ -201,6 +209,7 @@ export class WorkflowVersionWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'targetWorkflowVersion',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsSystem()
timelineActivities: Relation;
}
diff --git a/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts b/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts
index 50f5ee9ed8c..8f4e6ec5b65 100644
--- a/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts
+++ b/packages/twenty-server/src/modules/workspace-member/standard-objects/workspace-member.workspace-entity.ts
@@ -19,6 +19,7 @@ import { BaseWorkspaceEntity } from 'src/engine/twenty-orm/base.workspace-entity
import { WorkspaceEntity } from 'src/engine/twenty-orm/decorators/workspace-entity.decorator';
import { WorkspaceFieldIndex } from 'src/engine/twenty-orm/decorators/workspace-field-index.decorator';
import { WorkspaceField } from 'src/engine/twenty-orm/decorators/workspace-field.decorator';
+import { WorkspaceIsFieldUIReadOnly } from 'src/engine/twenty-orm/decorators/workspace-is-field-ui-readonly.decorator';
import { WorkspaceIsNullable } from 'src/engine/twenty-orm/decorators/workspace-is-nullable.decorator';
import { WorkspaceIsSearchable } from 'src/engine/twenty-orm/decorators/workspace-is-searchable.decorator';
import { WorkspaceIsSystem } from 'src/engine/twenty-orm/decorators/workspace-is-system.decorator';
@@ -107,6 +108,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconHierarchy2',
defaultValue: 0,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsSystem()
position: number;
@@ -117,6 +119,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Workspace member name`,
icon: 'IconCircleUser',
})
+ @WorkspaceIsFieldUIReadOnly()
name: FullNameMetadata;
@WorkspaceField({
@@ -127,6 +130,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconColorSwatch',
defaultValue: "'System'",
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsSystem()
colorScheme: string;
@@ -138,6 +142,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
icon: 'IconLanguage',
defaultValue: `'${SOURCE_LOCALE}'`,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsSystem()
locale: keyof typeof APP_LOCALES;
@@ -148,6 +153,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Workspace member avatar`,
icon: 'IconFileUpload',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
@WorkspaceIsSystem()
avatarUrl: string | null;
@@ -160,6 +166,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Related user email address`,
icon: 'IconMail',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
@WorkspaceIsSystem()
userEmail: string | null;
@@ -174,6 +181,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
dataType: NumberDataType.INT,
},
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsSystem()
calendarStartDay: number;
@@ -184,6 +192,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`Associated User Id`,
icon: 'IconCircleUsers',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsSystem()
userId: string;
@@ -195,6 +204,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
description: msg`User time zone`,
icon: 'IconTimezone',
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsSystem()
timeZone: string;
@@ -232,6 +242,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
],
defaultValue: `'${WorkspaceMemberDateFormatEnum.SYSTEM}'`,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsSystem()
dateFormat: string;
@@ -263,6 +274,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
],
defaultValue: `'${WorkspaceMemberTimeFormatEnum.SYSTEM}'`,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsSystem()
timeFormat: string;
@@ -277,6 +289,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'assignee',
onDelete: RelationOnDeleteAction.SET_NULL,
})
+ @WorkspaceIsFieldUIReadOnly()
assignedTasks: Relation;
@WorkspaceRelation({
@@ -289,6 +302,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'forWorkspaceMember',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
favorites: Relation;
@WorkspaceRelation({
@@ -301,6 +315,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'accountOwner',
onDelete: RelationOnDeleteAction.SET_NULL,
})
+ @WorkspaceIsFieldUIReadOnly()
accountOwnerForCompanies: Relation;
@WorkspaceRelation({
@@ -313,6 +328,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'author',
onDelete: RelationOnDeleteAction.SET_NULL,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsSystem()
authoredAttachments: Relation;
@@ -326,6 +342,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'accountOwner',
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
connectedAccounts: Relation;
@WorkspaceRelation({
@@ -338,6 +355,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'workspaceMember',
onDelete: RelationOnDeleteAction.SET_NULL,
})
+ @WorkspaceIsFieldUIReadOnly()
messageParticipants: Relation;
@WorkspaceRelation({
@@ -350,6 +368,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'workspaceMember',
onDelete: RelationOnDeleteAction.SET_NULL,
})
+ @WorkspaceIsFieldUIReadOnly()
blocklist: Relation;
@WorkspaceRelation({
@@ -362,6 +381,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideFieldKey: 'workspaceMember',
onDelete: RelationOnDeleteAction.SET_NULL,
})
+ @WorkspaceIsFieldUIReadOnly()
calendarEventParticipants: Relation<
CalendarEventParticipantWorkspaceEntity[]
>;
@@ -375,6 +395,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
inverseSideTarget: () => TimelineActivityWorkspaceEntity,
onDelete: RelationOnDeleteAction.CASCADE,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
@WorkspaceIsSystem()
timelineActivities: Relation;
@@ -390,6 +411,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
SEARCH_FIELDS_FOR_WORKSPACE_MEMBER,
),
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsNullable()
@WorkspaceIsSystem()
@WorkspaceFieldIndex({ indexType: IndexType.GIN })
@@ -435,6 +457,7 @@ export class WorkspaceMemberWorkspaceEntity extends BaseWorkspaceEntity {
],
defaultValue: `'${WorkspaceMemberNumberFormatEnum.SYSTEM}'`,
})
+ @WorkspaceIsFieldUIReadOnly()
@WorkspaceIsSystem()
numberFormat: string;
}