Add auto-upgrade-in-apps (#23001)

We need to auto upgrade application, lets add this column in application
entity, and add an admin button to autoupgrade all applications to
latest app registrration version manually

<img width="1131" height="372" alt="image"
src="https://github.com/user-attachments/assets/4e755abc-38ad-4895-a2e8-d55ee1948ac2"
/>

<img width="906" height="533" alt="image"
src="https://github.com/user-attachments/assets/ce002057-0341-4581-bf9a-66ac2bd84a9b"
/>
This commit is contained in:
martmull
2026-07-20 16:12:44 +02:00
committed by GitHub
parent 5bf3472eb9
commit baa84bb2e0
36 changed files with 561 additions and 72 deletions
@@ -660,6 +660,7 @@ type Application {
availablePackages: JSON!
applicationRegistrationId: UUID
canBeUninstalled: Boolean!
autoUpgrade: Boolean!
defaultRoleId: String
settingsCustomTabFrontComponentId: UUID @deprecated(reason: "Custom settings tabs are no longer supported. This field is ignored.")
defaultLogicFunctionRole: Role
@@ -3376,6 +3377,7 @@ type Mutation {
destroyViewGroup(input: DestroyViewGroupInput!): ViewGroup!
installMarketplaceApp(universalIdentifier: String!, version: String): Boolean! @deprecated(reason: "Use installApplication instead")
installApplication(universalIdentifier: String!, version: String): Application!
updateApplication(id: UUID!, input: UpdateApplicationInput!): Application!
uninstallApplication(universalIdentifier: String!): Boolean!
syncMarketplaceCatalog: Boolean!
createApplicationRegistration(input: CreateApplicationRegistrationInput!): CreateApplicationRegistration!
@@ -4277,6 +4279,10 @@ input DestroyViewGroupInput {
id: UUID!
}
input UpdateApplicationInput {
autoUpgrade: Boolean
}
input CreateApplicationRegistrationInput {
name: String!
universalIdentifier: String
@@ -449,6 +449,7 @@ export interface Application {
availablePackages: Scalars['JSON']
applicationRegistrationId?: Scalars['UUID']
canBeUninstalled: Scalars['Boolean']
autoUpgrade: Scalars['Boolean']
defaultRoleId?: Scalars['String']
/** @deprecated Custom settings tabs are no longer supported. This field is ignored. */
settingsCustomTabFrontComponentId?: Scalars['UUID']
@@ -2924,6 +2925,7 @@ export interface Mutation {
/** @deprecated Use installApplication instead */
installMarketplaceApp: Scalars['Boolean']
installApplication: Application
updateApplication: Application
uninstallApplication: Scalars['Boolean']
syncMarketplaceCatalog: Scalars['Boolean']
createApplicationRegistration: CreateApplicationRegistration
@@ -3514,6 +3516,7 @@ export interface ApplicationGenqlSelection{
availablePackages?: boolean | number
applicationRegistrationId?: boolean | number
canBeUninstalled?: boolean | number
autoUpgrade?: boolean | number
defaultRoleId?: boolean | number
/** @deprecated Custom settings tabs are no longer supported. This field is ignored. */
settingsCustomTabFrontComponentId?: boolean | number
@@ -6139,6 +6142,7 @@ export interface MutationGenqlSelection{
/** @deprecated Use installApplication instead */
installMarketplaceApp?: { __args: {universalIdentifier: Scalars['String'], version?: (Scalars['String'] | null)} }
installApplication?: (ApplicationGenqlSelection & { __args: {universalIdentifier: Scalars['String'], version?: (Scalars['String'] | null)} })
updateApplication?: (ApplicationGenqlSelection & { __args: {id: Scalars['UUID'], input: UpdateApplicationInput} })
uninstallApplication?: { __args: {universalIdentifier: Scalars['String']} }
syncMarketplaceCatalog?: boolean | number
createApplicationRegistration?: (CreateApplicationRegistrationGenqlSelection & { __args: {input: CreateApplicationRegistrationInput} })
@@ -6520,6 +6524,8 @@ export interface DestroyViewGroupInput {
/** The id of the view group to destroy. */
id: Scalars['UUID']}
export interface UpdateApplicationInput {autoUpgrade?: (Scalars['Boolean'] | null)}
export interface CreateApplicationRegistrationInput {name: Scalars['String'],universalIdentifier?: (Scalars['String'] | null),oAuthRedirectUris?: (Scalars['String'][] | null),oAuthScopes?: (Scalars['String'][] | null)}
export interface UpdateApplicationRegistrationInput {id: Scalars['String'],update: UpdateApplicationRegistrationPayload}
@@ -82,7 +82,7 @@ export default {
351,
358,
359,
485
486
],
"types": {
"BillingProductDTO": {
@@ -1277,6 +1277,9 @@ export default {
"canBeUninstalled": [
6
],
"autoUpgrade": [
6
],
"defaultRoleId": [
1
],
@@ -8099,6 +8102,19 @@ export default {
]
}
],
"updateApplication": [
54,
{
"id": [
3,
"UUID!"
],
"input": [
440,
"UpdateApplicationInput!"
]
}
],
"uninstallApplication": [
6,
{
@@ -8115,7 +8131,7 @@ export default {
196,
{
"input": [
440,
441,
"CreateApplicationRegistrationInput!"
]
}
@@ -8124,7 +8140,7 @@ export default {
8,
{
"input": [
441,
442,
"UpdateApplicationRegistrationInput!"
]
}
@@ -8151,7 +8167,7 @@ export default {
5,
{
"input": [
443,
444,
"CreateApplicationRegistrationVariableInput!"
]
}
@@ -8160,7 +8176,7 @@ export default {
5,
{
"input": [
444,
445,
"UpdateApplicationRegistrationVariableInput!"
]
}
@@ -8225,7 +8241,7 @@ export default {
29,
{
"createRoleInput": [
446,
447,
"CreateRoleInput!"
]
}
@@ -8234,7 +8250,7 @@ export default {
29,
{
"updateRoleInput": [
447,
448,
"UpdateRoleInput!"
]
}
@@ -8252,7 +8268,7 @@ export default {
16,
{
"upsertObjectPermissionsInput": [
449,
450,
"UpsertObjectPermissionsInput!"
]
}
@@ -8261,7 +8277,7 @@ export default {
27,
{
"upsertPermissionFlagsInput": [
451,
452,
"UpsertPermissionFlagsInput!"
]
}
@@ -8270,7 +8286,7 @@ export default {
26,
{
"upsertFieldPermissionsInput": [
452,
453,
"UpsertFieldPermissionsInput!"
]
}
@@ -8279,7 +8295,7 @@ export default {
233,
{
"input": [
454,
455,
"UpsertRowLevelPermissionPredicatesInput!"
]
}
@@ -8310,7 +8326,7 @@ export default {
281,
{
"input": [
457,
458,
"SendEmailViaDomainInput!"
]
}
@@ -8319,7 +8335,7 @@ export default {
283,
{
"input": [
458,
459,
"SendMessageCampaignInput!"
]
}
@@ -8328,7 +8344,7 @@ export default {
284,
{
"input": [
459,
460,
"CreateUnsubscribeTopicInput!"
]
}
@@ -8337,7 +8353,7 @@ export default {
284,
{
"input": [
460,
461,
"UpdateUnsubscribeTopicInput!"
]
}
@@ -8355,7 +8371,7 @@ export default {
271,
{
"input": [
461,
462,
"UpdateMessageChannelInput!"
]
}
@@ -8364,7 +8380,7 @@ export default {
279,
{
"input": [
463,
464,
"CreateEmailGroupChannelInput!"
]
}
@@ -8382,7 +8398,7 @@ export default {
269,
{
"input": [
464,
465,
"CreateEmailingDomainInput!"
]
}
@@ -8418,7 +8434,7 @@ export default {
296,
{
"input": [
465,
466,
"RunAgentInput!"
]
}
@@ -8427,7 +8443,7 @@ export default {
293,
{
"input": [
466,
467,
"CreateWebhookInput!"
]
}
@@ -8436,7 +8452,7 @@ export default {
293,
{
"input": [
467,
468,
"UpdateWebhookInput!"
]
}
@@ -8454,7 +8470,7 @@ export default {
329,
{
"input": [
469,
470,
"UpdateMessageFolderInput!"
]
}
@@ -8463,7 +8479,7 @@ export default {
329,
{
"input": [
471,
472,
"UpdateMessageFoldersInput!"
]
}
@@ -8472,7 +8488,7 @@ export default {
324,
{
"input": [
472,
473,
"UpdateCalendarChannelInput!"
]
}
@@ -8502,7 +8518,7 @@ export default {
1
],
"fileAttachments": [
474,
475,
"[FileAttachmentInput!]"
]
}
@@ -8531,7 +8547,7 @@ export default {
"UUID!"
],
"answers": [
475,
476,
"[AgentChatQuestionAnswerInput!]!"
],
"modelId": [
@@ -8601,7 +8617,7 @@ export default {
312,
{
"input": [
476,
477,
"CreateSkillInput!"
]
}
@@ -8610,7 +8626,7 @@ export default {
312,
{
"input": [
477,
478,
"UpdateSkillInput!"
]
}
@@ -8668,7 +8684,7 @@ export default {
246,
{
"input": [
478,
479,
"GetAuthorizationUrlForSSOInput!"
]
}
@@ -8834,7 +8850,7 @@ export default {
249,
{
"input": [
479
480
]
}
],
@@ -8989,7 +9005,7 @@ export default {
6,
{
"input": [
480,
481,
"UpdateWorkspaceMemberSettingsInput!"
]
}
@@ -9023,7 +9039,7 @@ export default {
219,
{
"input": [
481,
482,
"SetupOIDCSsoInput!"
]
}
@@ -9032,7 +9048,7 @@ export default {
219,
{
"input": [
482,
483,
"SetupSAMLSsoInput!"
]
}
@@ -9041,7 +9057,7 @@ export default {
215,
{
"input": [
483,
484,
"DeleteSsoInput!"
]
}
@@ -9050,7 +9066,7 @@ export default {
216,
{
"input": [
484,
485,
"EditSsoInput!"
]
}
@@ -9079,7 +9095,7 @@ export default {
308,
{
"type": [
485,
486,
"AnalyticsType!"
],
"name": [
@@ -9119,7 +9135,7 @@ export default {
298,
{
"input": [
486,
487,
"CreateCalendarEventInput!"
]
}
@@ -9128,7 +9144,7 @@ export default {
307,
{
"input": [
487,
488,
"SendEmailInput!"
]
}
@@ -9150,7 +9166,7 @@ export default {
"String!"
],
"connectionParameters": [
489,
490,
"EmailAccountConnectionParameters!"
],
"id": [
@@ -9162,7 +9178,7 @@ export default {
167,
{
"input": [
491,
492,
"UpdateLabPublicFeatureFlagInput!"
]
}
@@ -11023,6 +11039,14 @@ export default {
1
]
},
"UpdateApplicationInput": {
"autoUpgrade": [
6
],
"__typename": [
1
]
},
"CreateApplicationRegistrationInput": {
"name": [
1
@@ -11045,7 +11069,7 @@ export default {
1
],
"update": [
442
443
],
"__typename": [
1
@@ -11099,7 +11123,7 @@ export default {
1
],
"update": [
445
446
],
"__typename": [
1
@@ -11165,7 +11189,7 @@ export default {
},
"UpdateRoleInput": {
"update": [
448
449
],
"id": [
3
@@ -11220,7 +11244,7 @@ export default {
3
],
"objectPermissions": [
450
451
],
"__typename": [
1
@@ -11262,7 +11286,7 @@ export default {
3
],
"fieldPermissions": [
453
454
],
"__typename": [
1
@@ -11293,10 +11317,10 @@ export default {
3
],
"predicates": [
455
456
],
"predicateGroups": [
456
457
],
"__typename": [
1
@@ -11442,7 +11466,7 @@ export default {
3
],
"update": [
462
463
],
"__typename": [
1
@@ -11526,7 +11550,7 @@ export default {
3
],
"update": [
468
469
],
"__typename": [
1
@@ -11554,7 +11578,7 @@ export default {
3
],
"update": [
470
471
],
"__typename": [
1
@@ -11573,7 +11597,7 @@ export default {
3
],
"update": [
470
471
],
"__typename": [
1
@@ -11584,7 +11608,7 @@ export default {
3
],
"update": [
473
474
],
"__typename": [
1
@@ -11838,7 +11862,7 @@ export default {
1
],
"files": [
488
489
],
"__typename": [
1
@@ -11860,13 +11884,13 @@ export default {
1
],
"IMAP": [
490
491
],
"SMTP": [
490
491
],
"CALDAV": [
490
491
],
"__typename": [
1
@@ -11917,7 +11941,7 @@ export default {
234,
{
"input": [
493,
494,
"LogicFunctionLogsInput!"
]
}