chore: remove completed migration feature flags and upgrade commands <= 1.18 (#19074)

## Summary

- Remove 3 completed migration feature flags: `IS_ATTACHMENT_MIGRATED`,
`IS_NOTE_TARGET_MIGRATED`, `IS_TASK_TARGET_MIGRATED` — these were
already enabled by default for all new workspaces via
`DEFAULT_FEATURE_FLAGS`
- Delete all upgrade command directories for versions <= 1.18 (`1-16/`,
`1-17/`, `1-18/`) along with their module registrations, removing ~6,600
lines of dead migration code
- Simplify frontend utility functions
(`getActivityTargetObjectFieldIdName`, `getActivityTargetsFilter`,
`getActivityTargetFieldNameForObject`,
`generateActivityTargetMorphFieldKeys`,
`findActivitiesOperationSignatureFactory`) by removing the
`isMorphRelation` parameter and always using the morph relation path
- Remove feature flag checks from 7 frontend hooks/components that were
gating attachment and activity target behavior behind the removed flags
- Simplify `buildDefaultRelationFlatFieldMetadatasForCustomObject`
server util to always treat attachment, noteTarget, and taskTarget as
morph relations without checking feature flags
This commit is contained in:
Charles Bochet
2026-03-29 09:15:26 +02:00
committed by GitHub
parent f651413297
commit e8cb086b64
50 changed files with 29 additions and 6668 deletions
@@ -9,14 +9,12 @@ type GetActivityTargetFieldNameForObjectArgs = {
| CoreObjectNameSingular.Task;
targetObjectMetadataId: string;
objectMetadataItems: EnrichedObjectMetadataItem[];
isMorphRelation?: boolean;
};
export const getActivityTargetFieldNameForObject = ({
activityObjectNameSingular,
targetObjectMetadataId,
objectMetadataItems,
isMorphRelation = false,
}: GetActivityTargetFieldNameForObjectArgs): string | undefined => {
const activityTargetObjectNameSingular =
activityObjectNameSingular === CoreObjectNameSingular.Task
@@ -36,17 +34,13 @@ export const getActivityTargetFieldNameForObject = ({
(objectMetadataItem) => objectMetadataItem.id === targetObjectMetadataId,
);
if (isMorphRelation && isDefined(targetObjectMetadataItem)) {
const fieldIdName = getActivityTargetObjectFieldIdName({
nameSingular: targetObjectMetadataItem.nameSingular,
isMorphRelation: true,
});
return fieldIdName.replace(/Id$/, '');
if (!isDefined(targetObjectMetadataItem)) {
return undefined;
}
return activityTargetObjectMetadata.fields.find(
(field) =>
field.relation?.targetObjectMetadata.id === targetObjectMetadataId,
)?.name;
const fieldIdName = getActivityTargetObjectFieldIdName({
nameSingular: targetObjectMetadataItem.nameSingular,
});
return fieldIdName.replace(/Id$/, '');
};