Fix pre post logic function not executed (#19462)

- removes pre-install function 
- execute **asyncrhonously** post-install function at application
installation
- add optional `shouldRunOnVersionUpgrade` boolean value on post-install
function definition default false
- update PostInstallPayload to 
```
export type PostInstallPayload = {
  previousVersion?: string;
  newVersion: string;
};
```

---------

Co-authored-by: Charles Bochet <charles@twenty.com>
This commit is contained in:
martmull
2026-04-09 22:22:41 +02:00
committed by GitHub
parent 7a317b9182
commit d2f51cc939
33 changed files with 805 additions and 213 deletions
@@ -1,6 +1,8 @@
import { type ApplicationVariables } from './applicationVariablesType';
import { type ServerVariables } from './server-variables.type';
import { type SyncableEntityOptions } from './syncableEntityOptionsType';
import { type PostInstallLogicFunctionApplicationManifest } from '@/application/postInstallLogicFunctionApplicationType';
import { type PreInstallLogicFunctionApplicationManifest } from '@/application/preInstallLogicFunctionApplicationType';
export type ApplicationManifest = SyncableEntityOptions & {
defaultRoleUniversalIdentifier: string;
@@ -18,8 +20,8 @@ export type ApplicationManifest = SyncableEntityOptions & {
termsUrl?: string;
emailSupport?: string;
issueReportUrl?: string;
preInstallLogicFunctionUniversalIdentifier?: string;
postInstallLogicFunctionUniversalIdentifier?: string;
postInstallLogicFunction?: PostInstallLogicFunctionApplicationManifest;
preInstallLogicFunction?: PreInstallLogicFunctionApplicationManifest;
settingsCustomTabFrontComponentUniversalIdentifier?: string;
packageJsonChecksum: string | null;
yarnLockChecksum: string | null;
@@ -44,6 +44,8 @@ export type {
PageLayoutTabManifest,
PageLayoutManifest,
} from './pageLayoutManifestType';
export type { PostInstallLogicFunctionApplicationManifest } from './postInstallLogicFunctionApplicationType';
export type { PreInstallLogicFunctionApplicationManifest } from './preInstallLogicFunctionApplicationType';
export type {
ObjectPermissionManifest,
FieldPermissionManifest,
@@ -0,0 +1,6 @@
import { type PreInstallLogicFunctionApplicationManifest } from './preInstallLogicFunctionApplicationType';
export type PostInstallLogicFunctionApplicationManifest =
PreInstallLogicFunctionApplicationManifest & {
shouldRunSynchronously?: boolean;
};
@@ -0,0 +1,7 @@
import type { SyncableEntityOptions } from '@/application/syncableEntityOptionsType';
export type PreInstallLogicFunctionApplicationManifest =
SyncableEntityOptions & {
universalIdentifier: string;
shouldRunOnVersionUpgrade?: boolean;
};