From 772fde40d1aefe62598c8b915c537d44cde3d970 Mon Sep 17 00:00:00 2001 From: Muhsin Shah C P Date: Wed, 9 Jul 2025 13:05:33 +0530 Subject: [PATCH 01/13] chore: update subproject commits for frontend and server --- frontend/ee | 2 +- server/ee | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/ee b/frontend/ee index aed7af0149..62d9eaf7a7 160000 --- a/frontend/ee +++ b/frontend/ee @@ -1 +1 @@ -Subproject commit aed7af0149525ff745650c21ee40bf9caf2892dc +Subproject commit 62d9eaf7a7917f1a5635fa40b86888e0bfdd62f6 diff --git a/server/ee b/server/ee index 8c0e6dec37..3d3f77c026 160000 --- a/server/ee +++ b/server/ee @@ -1 +1 @@ -Subproject commit 8c0e6dec37f1b0bb7fb5552d8eef4db3ddc18b31 +Subproject commit 3d3f77c0266c56a57e9aac301ce7c98600d72000 From c3753e87252f01a9ad6218fd8315e3f59f19864c Mon Sep 17 00:00:00 2001 From: Muhsin Shah C P Date: Wed, 9 Jul 2025 14:06:29 +0530 Subject: [PATCH 02/13] Added optional chaining for renderCopilot function call as its not passed as prop in few cases hence getting resolbed to undefined (#13282) Co-authored-by: Nishidh Jain Co-authored-by: Johnson Cherian --- frontend/src/AppBuilder/CodeEditor/MultiLineCodeEditor.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/AppBuilder/CodeEditor/MultiLineCodeEditor.jsx b/frontend/src/AppBuilder/CodeEditor/MultiLineCodeEditor.jsx index 869ab065f2..c6a024eaf7 100644 --- a/frontend/src/AppBuilder/CodeEditor/MultiLineCodeEditor.jsx +++ b/frontend/src/AppBuilder/CodeEditor/MultiLineCodeEditor.jsx @@ -348,7 +348,7 @@ const MultiLineCodeEditor = (props) => { view={editorView} isPanelOpen={isSearchPanelOpen} renderCopilot={() => - renderCopilot({ + renderCopilot?.({ darkMode, language: lang, editorRef, From 3b5bbc0955cdae59e084497a02be02ae8f1fd21e Mon Sep 17 00:00:00 2001 From: Muhsin Shah C P Date: Wed, 9 Jul 2025 15:05:40 +0530 Subject: [PATCH 03/13] chore: update subproject commit reference in server/ee --- server/ee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/ee b/server/ee index 3d3f77c026..f13e8ed92d 160000 --- a/server/ee +++ b/server/ee @@ -1 +1 @@ -Subproject commit 3d3f77c0266c56a57e9aac301ce7c98600d72000 +Subproject commit f13e8ed92d642526009395842388ddd0325aec32 From 3ab3471b89208f103328f13d139492fee2d6b644 Mon Sep 17 00:00:00 2001 From: Muhsin Shah C P Date: Wed, 9 Jul 2025 16:45:45 +0530 Subject: [PATCH 04/13] chore: update subproject commits for frontend and server; add UPDATE_ICON feature key to workflow abilities (#13287) --- frontend/ee | 2 +- server/ee | 2 +- server/src/modules/apps/ability/workflow.ability.ts | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/frontend/ee b/frontend/ee index 62d9eaf7a7..aed7af0149 160000 --- a/frontend/ee +++ b/frontend/ee @@ -1 +1 @@ -Subproject commit 62d9eaf7a7917f1a5635fa40b86888e0bfdd62f6 +Subproject commit aed7af0149525ff745650c21ee40bf9caf2892dc diff --git a/server/ee b/server/ee index f13e8ed92d..1754d14f2f 160000 --- a/server/ee +++ b/server/ee @@ -1 +1 @@ -Subproject commit f13e8ed92d642526009395842388ddd0325aec32 +Subproject commit 1754d14f2fc5dee8616f09f13e63b3569e42f3ee diff --git a/server/src/modules/apps/ability/workflow.ability.ts b/server/src/modules/apps/ability/workflow.ability.ts index d02443c5a4..c9630c4875 100644 --- a/server/src/modules/apps/ability/workflow.ability.ts +++ b/server/src/modules/apps/ability/workflow.ability.ts @@ -32,6 +32,7 @@ export function defineWorkflowAbility( FEATURE_KEY.RELEASE, FEATURE_KEY.VALIDATE_PRIVATE_APP_ACCESS, FEATURE_KEY.VALIDATE_RELEASED_APP_ACCESS, + FEATURE_KEY.UPDATE_ICON, ], App ); @@ -56,6 +57,7 @@ export function defineWorkflowAbility( FEATURE_KEY.RELEASE, FEATURE_KEY.VALIDATE_PRIVATE_APP_ACCESS, FEATURE_KEY.VALIDATE_RELEASED_APP_ACCESS, + FEATURE_KEY.UPDATE_ICON, ], App ); From 16d931c1c229bfc75a8d33453f4ef1291a41720d Mon Sep 17 00:00:00 2001 From: Devanshu Rastogi Date: Wed, 9 Jul 2025 17:10:05 +0530 Subject: [PATCH 05/13] Fix: Scroll issue for large set of logs in response (#13288) * Added optional chaining for renderCopilot function call as its not passed as prop in few cases hence getting resolbed to undefined * Update ee-server submodule reference * Fix: Scroll issue for large set of logs in response --------- Co-authored-by: Nishidh Jain Co-authored-by: Johnson Cherian --- frontend/ee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/ee b/frontend/ee index aed7af0149..c955741e5a 160000 --- a/frontend/ee +++ b/frontend/ee @@ -1 +1 @@ -Subproject commit aed7af0149525ff745650c21ee40bf9caf2892dc +Subproject commit c955741e5a120cd61651eaf14aef0d5c67059cb0 From eecfdccdd8b2ecfb537c7d9f830f75603c850114 Mon Sep 17 00:00:00 2001 From: Devanshu Rastogi Date: Wed, 9 Jul 2025 18:03:25 +0530 Subject: [PATCH 06/13] Fix: Remove 'Choose from Template' option from import menu (#13290) --- .../common/components/BaseImportAppMenu/BaseImportAppMenu.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/modules/common/components/BaseImportAppMenu/BaseImportAppMenu.jsx b/frontend/src/modules/common/components/BaseImportAppMenu/BaseImportAppMenu.jsx index 85a6c25b8d..4808ca46b5 100644 --- a/frontend/src/modules/common/components/BaseImportAppMenu/BaseImportAppMenu.jsx +++ b/frontend/src/modules/common/components/BaseImportAppMenu/BaseImportAppMenu.jsx @@ -17,7 +17,7 @@ const BaseImportAppMenu = ({ const { t } = useTranslation(); return ( - {appType !== 'wzorkflow' && appType !== 'module' && ( + {appType !== 'workflow' && appType !== 'module' && ( Date: Wed, 9 Jul 2025 18:36:25 +0530 Subject: [PATCH 07/13] Fixed loop icon issue in logs and Import workflow modal text issues (#13292) --- frontend/src/HomePage/HomePage.jsx | 38 +++++++++++++++++------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/frontend/src/HomePage/HomePage.jsx b/frontend/src/HomePage/HomePage.jsx index 31aa2dfee0..d6b2edcebb 100644 --- a/frontend/src/HomePage/HomePage.jsx +++ b/frontend/src/HomePage/HomePage.jsx @@ -478,7 +478,7 @@ class HomePageComponent extends React.Component { let installedPluginsInfo = []; try { if (this.state.dependentPlugins.length) { - ({ installedPluginsInfo =[] } = await pluginsService.installDependentPlugins( + ({ installedPluginsInfo = [] } = await pluginsService.installDependentPlugins( this.state.dependentPlugins, true )); @@ -486,7 +486,8 @@ class HomePageComponent extends React.Component { if (importJSON.app[0].definition.appV2.type !== this.props.appType) { toast.error( - `${this.props.appType === 'module' ? 'App' : 'Module'} could not be imported in ${this.props.appType === 'module' ? 'modules' : 'apps' + `${this.props.appType === 'module' ? 'App' : 'Module'} could not be imported in ${ + this.props.appType === 'module' ? 'modules' : 'apps' } section. Switch to ${this.props.appType === 'module' ? 'apps' : 'modules'} section and try again.`, { style: { maxWidth: '425px' } } ); @@ -495,7 +496,7 @@ class HomePageComponent extends React.Component { } const data = await appsService.importResource(requestBody, this.props.appType); - toast.success(`${this.props.appType === 'module' ? 'Module' : 'App'} imported successfully.`); + toast.success(`${this.getAppType()} imported successfully.`); this.setState({ isImportingApp: false }); if (!isEmpty(data.imports.app)) { @@ -1154,13 +1155,14 @@ class HomePageComponent extends React.Component { closeModal: () => this.setState({ showImportAppModal: false }), processApp: this.importFile, show: this.openImportAppModal, - title: 'Import app', - actionButton: 'Import app', + title: `Import ${this.getAppType().toLocaleLowerCase()}`, + actionButton: `Import ${this.getAppType().toLocaleLowerCase()}`, actionLoadingButton: 'Importing', fileContent: fileContent, selectedAppName: fileName, dependentPluginsDetail: dependentPluginsDetail, dependentPlugins: dependentPlugins, + appType: this.props.appType, }, template: { modalType: 'template', @@ -1224,8 +1226,9 @@ class HomePageComponent extends React.Component {
User groups @@ -1301,8 +1304,8 @@ class HomePageComponent extends React.Component { this.props.appType === 'workflow' ? 'homePage.deleteWorkflowAndData' : this.props.appType === 'front-end' - ? 'homePage.deleteAppAndData' - : deleteModuleText, + ? 'homePage.deleteAppAndData' + : deleteModuleText, { appName: appToBeDeleted?.name, } @@ -1567,10 +1570,11 @@ class HomePageComponent extends React.Component { {this.props.appType === 'module' ? 'Create new module' : this.props.t( - `${this.props.appType === 'workflow' ? 'workflowsDashboard' : 'homePage' - }.header.createNewApplication`, - 'Create new app' - )} + `${ + this.props.appType === 'workflow' ? 'workflowsDashboard' : 'homePage' + }.header.createNewApplication`, + 'Create new app' + )} = workflowInstanceLevelLimit.total || - 100 > workflowInstanceLevelLimit.percentage >= 90 || - workflowInstanceLevelLimit.current === workflowInstanceLevelLimit.total - 1 + 100 > workflowInstanceLevelLimit.percentage >= 90 || + workflowInstanceLevelLimit.current === workflowInstanceLevelLimit.total - 1 ? workflowInstanceLevelLimit : workflowWorkspaceLevelLimit } @@ -1731,8 +1735,8 @@ class HomePageComponent extends React.Component { appType={this.props.appType} workflowsLimit={ workflowInstanceLevelLimit.current >= workflowInstanceLevelLimit.total || - 100 > workflowInstanceLevelLimit.percentage >= 90 || - workflowInstanceLevelLimit.current === workflowInstanceLevelLimit.total - 1 + 100 > workflowInstanceLevelLimit.percentage >= 90 || + workflowInstanceLevelLimit.current === workflowInstanceLevelLimit.total - 1 ? workflowInstanceLevelLimit : workflowWorkspaceLevelLimit } From 11d04391f94c9c24b8a1e38d8ab4cd4ec363733f Mon Sep 17 00:00:00 2001 From: Devanshu Rastogi Date: Thu, 10 Jul 2025 10:32:21 +0530 Subject: [PATCH 08/13] Fix: Initialize asyncQueryRuns in the state to avoid accessing undefined entity (#13300) --- frontend/src/AppBuilder/_stores/slices/queryPanelSlice.js | 1 + 1 file changed, 1 insertion(+) diff --git a/frontend/src/AppBuilder/_stores/slices/queryPanelSlice.js b/frontend/src/AppBuilder/_stores/slices/queryPanelSlice.js index 47d425a0c0..27052d3603 100644 --- a/frontend/src/AppBuilder/_stores/slices/queryPanelSlice.js +++ b/frontend/src/AppBuilder/_stores/slices/queryPanelSlice.js @@ -34,6 +34,7 @@ const initialState = { showDeleteConfirmation: false, renamingQueryId: null, deletingQueryId: null, + asyncQueryRuns: [], }; export const createQueryPanelSlice = (set, get) => ({ From 680040d52019167b155feb24875f8ec193c19f32 Mon Sep 17 00:00:00 2001 From: Akshay Date: Thu, 10 Jul 2025 12:31:16 +0530 Subject: [PATCH 09/13] fix: workflow schedule cleanup (#13295) --- frontend/ee | 2 +- server/ee | 2 +- server/src/modules/apps/module.ts | 7 ++++ server/src/modules/apps/service.ts | 34 ++++++++++++++----- ...on.listener.ts => app-actions.listener.ts} | 4 +-- 5 files changed, 37 insertions(+), 12 deletions(-) rename server/src/modules/workflows/listeners/{app-deletion.listener.ts => app-actions.listener.ts} (71%) diff --git a/frontend/ee b/frontend/ee index c955741e5a..aed7af0149 160000 --- a/frontend/ee +++ b/frontend/ee @@ -1 +1 @@ -Subproject commit c955741e5a120cd61651eaf14aef0d5c67059cb0 +Subproject commit aed7af0149525ff745650c21ee40bf9caf2892dc diff --git a/server/ee b/server/ee index 1754d14f2f..8c0e6dec37 160000 --- a/server/ee +++ b/server/ee @@ -1 +1 @@ -Subproject commit 1754d14f2fc5dee8616f09f13e63b3569e42f3ee +Subproject commit 8c0e6dec37f1b0bb7fb5552d8eef4db3ddc18b31 diff --git a/server/src/modules/apps/module.ts b/server/src/modules/apps/module.ts index f30e91cd11..71351a825c 100644 --- a/server/src/modules/apps/module.ts +++ b/server/src/modules/apps/module.ts @@ -52,6 +52,11 @@ export class AppsModule extends SubModule { 'services/page.util.service', ]); + const { AppsActionsListener, TemporalService } = await this.getProviders(configs, 'workflows', [ + 'listeners/app-actions.listener', + 'services/temporal.service', + ]); + return { module: AppsModule, imports: [ @@ -74,6 +79,8 @@ export class AppsModule extends SubModule { VersionRepository, AppsRepository, AppGitRepository, + AppsActionsListener, + TemporalService, PageService, EventsService, AppsUtilService, diff --git a/server/src/modules/apps/service.ts b/server/src/modules/apps/service.ts index 2f57c6d737..182c29da46 100644 --- a/server/src/modules/apps/service.ts +++ b/server/src/modules/apps/service.ts @@ -42,6 +42,7 @@ import { AUDIT_LOGS_REQUEST_CONTEXT_KEY } from '@modules/app/constants'; import { MODULES } from '@modules/app/constants/modules'; import { EventEmitter2 } from '@nestjs/event-emitter'; import { AppGitRepository } from '@modules/app-git/repository'; +import { WorkflowSchedule } from '@entities/workflow_schedule.entity'; @Injectable() export class AppsService implements IAppsService { @@ -60,7 +61,7 @@ export class AppsService implements IAppsService { protected readonly componentsService: ComponentsService, protected readonly eventEmitter: EventEmitter2, protected readonly appGitRepository: AppGitRepository - ) { } + ) {} async create(user: User, appCreateDto: AppCreateDto) { const { name, icon, type, prompt } = appCreateDto; return await dbTransactionWrap(async (manager: EntityManager) => { @@ -107,12 +108,12 @@ export class AppsService implements IAppsService { : versionName ? await this.versionRepository.findByName(versionName, app.id) : // Handle version retrieval based on env - await this.versionRepository.findLatestVersionForEnvironment( - app.id, - envId, - environmentName, - app.organizationId - ); + await this.versionRepository.findLatestVersionForEnvironment( + app.id, + envId, + environmentName, + app.organizationId + ); if (!version) { throw new NotFoundException("Couldn't found app version. Please check the version name"); @@ -181,7 +182,24 @@ export class AppsService implements IAppsService { const { organizationId } = user; const { id } = app; - await this.appRepository.delete({ id, organizationId }); + await dbTransactionWrap(async (manager: EntityManager) => { + const schedules = await manager + .createQueryBuilder(WorkflowSchedule, 'workflowSchedule') + .innerJoinAndSelect('workflowSchedule.workflow', 'appVersion') + .where('appVersion.appId = :appId', { appId: id }) + .getMany(); + + // Emit event with schedule IDs for temporal schedule cleanup + if (schedules.length > 0) { + const scheduleIds = schedules.map((schedule) => schedule.id); + this.eventEmitter.emit('app.deleted', { + appId: id, + scheduleIds: scheduleIds, + }); + } + + await manager.delete(App, { id, organizationId }); + }); //APP_DELETE audit RequestContext.setLocals(AUDIT_LOGS_REQUEST_CONTEXT_KEY, { diff --git a/server/src/modules/workflows/listeners/app-deletion.listener.ts b/server/src/modules/workflows/listeners/app-actions.listener.ts similarity index 71% rename from server/src/modules/workflows/listeners/app-deletion.listener.ts rename to server/src/modules/workflows/listeners/app-actions.listener.ts index 302bd36b86..72d28d991e 100644 --- a/server/src/modules/workflows/listeners/app-deletion.listener.ts +++ b/server/src/modules/workflows/listeners/app-actions.listener.ts @@ -4,8 +4,8 @@ import { OnEvent } from '@nestjs/event-emitter'; @Injectable() export class AppsActionsListener { constructor() {} - @OnEvent('beforeAppDelete') + @OnEvent('app.deleted') async handleAppDeletion(args: { appId: string }) { - throw new Error('Method not implemented'); + console.log(`App with ID ${args.appId} has been deleted.`); } } From ccbc37d0b6142c6c7d7a304b2467b716ec6cd339 Mon Sep 17 00:00:00 2001 From: Muhsin Shah C P Date: Thu, 10 Jul 2025 13:11:52 +0530 Subject: [PATCH 10/13] fix: update subproject commit reference (#13308) --- frontend/ee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/ee b/frontend/ee index 01af83abcd..8b17822c15 160000 --- a/frontend/ee +++ b/frontend/ee @@ -1 +1 @@ -Subproject commit 01af83abcdb663c04088e215ff84f90d2bd33a62 +Subproject commit 8b17822c155f18f3f56a6c15a607cc9f9738cb9f From 27ba370d7263cc6bbc1bdb3d711323f7cfc84edf Mon Sep 17 00:00:00 2001 From: Muhsin Shah C P Date: Thu, 10 Jul 2025 13:30:34 +0530 Subject: [PATCH 11/13] feat: add export option for workflows in AppMenu (#13309) --- frontend/src/HomePage/AppMenu.jsx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/frontend/src/HomePage/AppMenu.jsx b/frontend/src/HomePage/AppMenu.jsx index 6c2a521c57..0bfa96583e 100644 --- a/frontend/src/HomePage/AppMenu.jsx +++ b/frontend/src/HomePage/AppMenu.jsx @@ -94,6 +94,11 @@ export const AppMenu = function AppMenu({ )} + {canUpdateApp && canCreateApp && appType === 'workflow' && ( + <> + + + )} {canDeleteApp && ( Date: Thu, 10 Jul 2025 15:45:39 +0530 Subject: [PATCH 12/13] update base repo for this submodule commit (#13315) --- frontend/ee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/ee b/frontend/ee index 8b17822c15..3124bbc0be 160000 --- a/frontend/ee +++ b/frontend/ee @@ -1 +1 @@ -Subproject commit 8b17822c155f18f3f56a6c15a607cc9f9738cb9f +Subproject commit 3124bbc0beb8c14d051804336ebe29e59a7ac3c9 From 02bced206108a7a3f54ee003632c777724020d5d Mon Sep 17 00:00:00 2001 From: Akshay Sasidharan Date: Thu, 10 Jul 2025 18:54:13 +0530 Subject: [PATCH 13/13] chore: update submodule to latest commit --- frontend/ee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/ee b/frontend/ee index 01af83abcd..5ebcf5ccda 160000 --- a/frontend/ee +++ b/frontend/ee @@ -1 +1 @@ -Subproject commit 01af83abcdb663c04088e215ff84f90d2bd33a62 +Subproject commit 5ebcf5ccda1d11cb73e77b9a9bf71c16e1404c7b