From f91144c92bf5508eab20b715cb2ef3bad96763a0 Mon Sep 17 00:00:00 2001 From: Alexander Onnikov Date: Mon, 15 Sep 2025 11:53:01 +0700 Subject: [PATCH 1/9] fix: update docker images to latest base (#9854) * fix: update docker images to latest base Signed-off-by: Alexander Onnikov * some more fixes Signed-off-by: Alexander Onnikov --------- Signed-off-by: Alexander Onnikov --- dev/import-tool/Dockerfile | 2 +- pods/account/Dockerfile | 2 +- pods/backup/Dockerfile | 2 +- pods/collaborator/Dockerfile | 2 +- pods/front/Dockerfile | 2 +- pods/fulltext/Dockerfile | 2 +- pods/media/Dockerfile | 2 +- pods/server/Dockerfile | 2 +- pods/stats/Dockerfile | 2 +- pods/workspace/Dockerfile | 2 +- server/collaborator/Dockerfile | 8 -------- services/ai-bot/love-agent/Dockerfile | 2 +- services/ai-bot/pod-ai-bot/Dockerfile | 2 +- .../pod-analytics-collector/Dockerfile | 2 +- services/backup/backup-api-pod/Dockerfile | 2 +- services/billing/pod-billing/Dockerfile | 2 +- services/calendar/pod-calendar-mailer/Dockerfile | 2 +- services/calendar/pod-calendar/Dockerfile | 2 +- services/datalake/pod-datalake/Dockerfile | 2 +- services/export/pod-export/Dockerfile | 2 +- services/github/pod-github/Dockerfile | 2 +- services/gmail/pod-gmail/Dockerfile | 2 +- services/love/Dockerfile | 2 +- services/mail/pod-mail-worker/Dockerfile | 2 +- services/mail/pod-mail/Dockerfile | 2 +- services/notification/pod-notification/Dockerfile | 2 +- services/process/Dockerfile | 2 +- services/sign/pod-sign/Dockerfile | 2 +- services/telegram-bot/pod-telegram-bot/Dockerfile | 2 +- services/telegram/pod-telegram/Dockerfile | 2 +- 30 files changed, 29 insertions(+), 37 deletions(-) delete mode 100644 server/collaborator/Dockerfile diff --git a/dev/import-tool/Dockerfile b/dev/import-tool/Dockerfile index c685273701..1ef74dadee 100644 --- a/dev/import-tool/Dockerfile +++ b/dev/import-tool/Dockerfile @@ -1,4 +1,4 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/pods/account/Dockerfile b/pods/account/Dockerfile index 2878b6ec19..f9f1881776 100644 --- a/pods/account/Dockerfile +++ b/pods/account/Dockerfile @@ -1,4 +1,4 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/pods/backup/Dockerfile b/pods/backup/Dockerfile index 95288928c4..9d1944f396 100644 --- a/pods/backup/Dockerfile +++ b/pods/backup/Dockerfile @@ -1,5 +1,5 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/pods/collaborator/Dockerfile b/pods/collaborator/Dockerfile index f13a765dd3..d44f2843ca 100644 --- a/pods/collaborator/Dockerfile +++ b/pods/collaborator/Dockerfile @@ -1,5 +1,5 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/pods/front/Dockerfile b/pods/front/Dockerfile index 2dd1ffdb75..52a4752670 100644 --- a/pods/front/Dockerfile +++ b/pods/front/Dockerfile @@ -1,4 +1,4 @@ -FROM hardcoreeng/front-base:v20250310 +FROM hardcoreeng/front-base:v20250902 WORKDIR /app COPY bundle/bundle.js ./ diff --git a/pods/fulltext/Dockerfile b/pods/fulltext/Dockerfile index a6bca92745..8f0a73ceee 100644 --- a/pods/fulltext/Dockerfile +++ b/pods/fulltext/Dockerfile @@ -1,5 +1,5 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/pods/media/Dockerfile b/pods/media/Dockerfile index 385c5d349b..387f873a9f 100644 --- a/pods/media/Dockerfile +++ b/pods/media/Dockerfile @@ -1,4 +1,4 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/pods/server/Dockerfile b/pods/server/Dockerfile index a4bac4f00b..b54e56c74f 100644 --- a/pods/server/Dockerfile +++ b/pods/server/Dockerfile @@ -1,4 +1,4 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/model.json ./ diff --git a/pods/stats/Dockerfile b/pods/stats/Dockerfile index bcf0e9ef50..9cbfd35631 100644 --- a/pods/stats/Dockerfile +++ b/pods/stats/Dockerfile @@ -1,4 +1,4 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/pods/workspace/Dockerfile b/pods/workspace/Dockerfile index 5e6038c6e4..aa6a2a1911 100644 --- a/pods/workspace/Dockerfile +++ b/pods/workspace/Dockerfile @@ -1,4 +1,4 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/server/collaborator/Dockerfile b/server/collaborator/Dockerfile deleted file mode 100644 index dd5133370e..0000000000 --- a/server/collaborator/Dockerfile +++ /dev/null @@ -1,8 +0,0 @@ - -FROM hardcoreeng/base:v20250310 -WORKDIR /usr/src/app - -COPY bundle/bundle.js ./ - -EXPOSE 3078 -CMD [ "node", "bundle.js" ] \ No newline at end of file diff --git a/services/ai-bot/love-agent/Dockerfile b/services/ai-bot/love-agent/Dockerfile index a13181510c..f7177079fd 100644 --- a/services/ai-bot/love-agent/Dockerfile +++ b/services/ai-bot/love-agent/Dockerfile @@ -1,4 +1,4 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app RUN npm install -g pnpm diff --git a/services/ai-bot/pod-ai-bot/Dockerfile b/services/ai-bot/pod-ai-bot/Dockerfile index 5d4aef96f2..959b50f501 100644 --- a/services/ai-bot/pod-ai-bot/Dockerfile +++ b/services/ai-bot/pod-ai-bot/Dockerfile @@ -1,4 +1,4 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/analytics-collector/pod-analytics-collector/Dockerfile b/services/analytics-collector/pod-analytics-collector/Dockerfile index b2af8a2e9b..a7bccece35 100644 --- a/services/analytics-collector/pod-analytics-collector/Dockerfile +++ b/services/analytics-collector/pod-analytics-collector/Dockerfile @@ -1,4 +1,4 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/backup/backup-api-pod/Dockerfile b/services/backup/backup-api-pod/Dockerfile index 1971c23916..8646ed8048 100644 --- a/services/backup/backup-api-pod/Dockerfile +++ b/services/backup/backup-api-pod/Dockerfile @@ -1,4 +1,4 @@ -FROM hardcoreeng/front-base:v20250310 +FROM hardcoreeng/front-base:v20250902 WORKDIR /app COPY bundle/bundle.js ./ diff --git a/services/billing/pod-billing/Dockerfile b/services/billing/pod-billing/Dockerfile index 1971c23916..847da98ef2 100644 --- a/services/billing/pod-billing/Dockerfile +++ b/services/billing/pod-billing/Dockerfile @@ -1,4 +1,4 @@ -FROM hardcoreeng/front-base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /app COPY bundle/bundle.js ./ diff --git a/services/calendar/pod-calendar-mailer/Dockerfile b/services/calendar/pod-calendar-mailer/Dockerfile index 67a8238765..0b26fbbf01 100644 --- a/services/calendar/pod-calendar-mailer/Dockerfile +++ b/services/calendar/pod-calendar-mailer/Dockerfile @@ -1,5 +1,5 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/calendar/pod-calendar/Dockerfile b/services/calendar/pod-calendar/Dockerfile index 67a8238765..0b26fbbf01 100644 --- a/services/calendar/pod-calendar/Dockerfile +++ b/services/calendar/pod-calendar/Dockerfile @@ -1,5 +1,5 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/datalake/pod-datalake/Dockerfile b/services/datalake/pod-datalake/Dockerfile index 1971c23916..8646ed8048 100644 --- a/services/datalake/pod-datalake/Dockerfile +++ b/services/datalake/pod-datalake/Dockerfile @@ -1,4 +1,4 @@ -FROM hardcoreeng/front-base:v20250310 +FROM hardcoreeng/front-base:v20250902 WORKDIR /app COPY bundle/bundle.js ./ diff --git a/services/export/pod-export/Dockerfile b/services/export/pod-export/Dockerfile index e971910079..69270cb655 100644 --- a/services/export/pod-export/Dockerfile +++ b/services/export/pod-export/Dockerfile @@ -1,5 +1,5 @@ -FROM hardcoreeng/print-base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/github/pod-github/Dockerfile b/services/github/pod-github/Dockerfile index f13a765dd3..d44f2843ca 100644 --- a/services/github/pod-github/Dockerfile +++ b/services/github/pod-github/Dockerfile @@ -1,5 +1,5 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/gmail/pod-gmail/Dockerfile b/services/gmail/pod-gmail/Dockerfile index 59340b0bd6..f9c01784b9 100644 --- a/services/gmail/pod-gmail/Dockerfile +++ b/services/gmail/pod-gmail/Dockerfile @@ -1,4 +1,4 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/love/Dockerfile b/services/love/Dockerfile index 323356ff0d..fd1c10383c 100644 --- a/services/love/Dockerfile +++ b/services/love/Dockerfile @@ -1,5 +1,5 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/mail/pod-mail-worker/Dockerfile b/services/mail/pod-mail-worker/Dockerfile index bfca59ca3b..8ee866648e 100644 --- a/services/mail/pod-mail-worker/Dockerfile +++ b/services/mail/pod-mail-worker/Dockerfile @@ -1,4 +1,4 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/mail/pod-mail/Dockerfile b/services/mail/pod-mail/Dockerfile index b69d459d33..ec8bb3d35d 100644 --- a/services/mail/pod-mail/Dockerfile +++ b/services/mail/pod-mail/Dockerfile @@ -1,4 +1,4 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/notification/pod-notification/Dockerfile b/services/notification/pod-notification/Dockerfile index 73007111cd..a3f8904f61 100644 --- a/services/notification/pod-notification/Dockerfile +++ b/services/notification/pod-notification/Dockerfile @@ -1,4 +1,4 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/process/Dockerfile b/services/process/Dockerfile index 250a1e2da9..c32e97f508 100644 --- a/services/process/Dockerfile +++ b/services/process/Dockerfile @@ -1,5 +1,5 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/sign/pod-sign/Dockerfile b/services/sign/pod-sign/Dockerfile index b3c0962103..a7764246b1 100644 --- a/services/sign/pod-sign/Dockerfile +++ b/services/sign/pod-sign/Dockerfile @@ -1,5 +1,5 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/telegram-bot/pod-telegram-bot/Dockerfile b/services/telegram-bot/pod-telegram-bot/Dockerfile index c05f9afd6e..7b4c5beec1 100644 --- a/services/telegram-bot/pod-telegram-bot/Dockerfile +++ b/services/telegram-bot/pod-telegram-bot/Dockerfile @@ -1,4 +1,4 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ diff --git a/services/telegram/pod-telegram/Dockerfile b/services/telegram/pod-telegram/Dockerfile index c79f4a59cd..8433cb17da 100644 --- a/services/telegram/pod-telegram/Dockerfile +++ b/services/telegram/pod-telegram/Dockerfile @@ -1,5 +1,5 @@ -FROM hardcoreeng/base:v20250310 +FROM hardcoreeng/base:v20250902 WORKDIR /usr/src/app COPY bundle/bundle.js ./ From b97ad1c8e712466bebfd9d6d84ad034344cd41a6 Mon Sep 17 00:00:00 2001 From: Alexander Onnikov Date: Mon, 15 Sep 2025 11:53:27 +0700 Subject: [PATCH 2/9] fix: do not show error when love recording not available (#9852) Signed-off-by: Alexander Onnikov --- plugins/love-resources/src/utils.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/love-resources/src/utils.ts b/plugins/love-resources/src/utils.ts index 9423067439..6244ff0110 100644 --- a/plugins/love-resources/src/utils.ts +++ b/plugins/love-resources/src/utils.ts @@ -717,10 +717,12 @@ async function checkRecordAvailable (): Promise { setTimeout(() => { void checkRecordAvailable() }, 500) - } else { + } else if (endpoint !== '') { const res = await fetch(concatLink(endpoint, '/checkRecordAvailable')) const result = await res.json() isRecordingAvailable.set(result) + } else { + console.info('office recording is not configured') } } catch (err: any) { Analytics.handleError(err) From e6d47d12264479b0b2bb89ad1a794b861219538f Mon Sep 17 00:00:00 2001 From: Denis Bykhov Date: Mon, 15 Sep 2025 10:16:53 +0500 Subject: [PATCH 3/9] Sortable states and transitions (#9845) * Sortable states and transitions Signed-off-by: Denis Bykhov * fix: remove unnecessary transitions prop from TransitionsInlineEditor Signed-off-by: Denis Bykhov --------- Signed-off-by: Denis Bykhov --- models/process/package.json | 1 + models/process/src/index.ts | 19 +++++++- models/process/src/migration.ts | 28 +++++++++++- .../src/components/ProcessesSection.svelte | 3 ++ .../settings/AddTransitionPopup.svelte | 39 +++++++++++++--- .../components/settings/ProcessEditor.svelte | 30 +++++++++---- .../settings/StatesInlineEditor.svelte | 20 ++++++--- .../settings/TransitionsInlineEditor.svelte | 45 +++++++++++-------- plugins/process/src/index.ts | 4 +- .../src/components/list/SortableList.svelte | 10 +++-- services/process/src/main.ts | 43 ++++++++++++------ 11 files changed, 183 insertions(+), 59 deletions(-) diff --git a/models/process/package.json b/models/process/package.json index 5631328f05..d2fde4d349 100644 --- a/models/process/package.json +++ b/models/process/package.json @@ -44,6 +44,7 @@ "@hcengineering/time": "^0.6.0", "@hcengineering/setting": "^0.6.17", "@hcengineering/model-time": "^0.6.0", + "@hcengineering/rank": "^0.6.4", "@hcengineering/process": "^0.6.0", "@hcengineering/process-resources": "^0.6.0", "@hcengineering/model-presentation": "^0.6.0", diff --git a/models/process/src/index.ts b/models/process/src/index.ts index 81e61e4178..b2bf9b7c72 100644 --- a/models/process/src/index.ts +++ b/models/process/src/index.ts @@ -19,6 +19,7 @@ import core, { DOMAIN_MODEL, type Doc, type Domain, + type Rank, type Ref, SortingOrder, type Space, @@ -26,11 +27,13 @@ import core, { } from '@hcengineering/core' import { type Builder, + Hidden, Model, Prop, ReadOnly, TypeAny, TypeBoolean, + TypeRank, TypeRef, TypeString, UX @@ -134,6 +137,10 @@ export class TTransition extends TDoc implements Transition { triggerParams!: Record result?: TriggerResult | null + + @Prop(TypeRank(), core.string.Rank) + @Hidden() + rank!: Rank } @Model(process.class.ExecutionLog, core.class.Doc, DOMAIN_PROCESS_LOG) @@ -213,8 +220,16 @@ export class TMethod extends TDoc implements Method { @Model(process.class.State, core.class.Doc, DOMAIN_MODEL) export class TState extends TDoc implements State { - process!: Ref - title!: string + @Prop(TypeRef(process.class.Process), process.string.Process) + @ReadOnly() + process!: Ref + + @Prop(TypeString(), core.string.Name) + title!: string + + @Prop(TypeRank(), core.string.Rank) + @Hidden() + rank!: Rank } @Model(process.class.ProcessFunction, core.class.Doc, DOMAIN_MODEL) diff --git a/models/process/src/migration.ts b/models/process/src/migration.ts index a93f5fcc2d..492f9a8ce5 100644 --- a/models/process/src/migration.ts +++ b/models/process/src/migration.ts @@ -13,7 +13,7 @@ // limitations under the License. // -import core, { type Client, type Doc, TxOperations } from '@hcengineering/core' +import core, { type Client, type Doc, type Rank, TxOperations } from '@hcengineering/core' import { type MigrateOperation, type MigrationClient, @@ -21,6 +21,7 @@ import { tryUpgrade } from '@hcengineering/model' import process, { type State, type Step } from '@hcengineering/process' +import { makeRank } from '@hcengineering/rank' import { processId } from '.' export const processOperation: MigrateOperation = { @@ -31,6 +32,11 @@ export const processOperation: MigrateOperation = { state: 'migrateActionsFromStates', mode: 'upgrade', func: migrateActionsFromStates + }, + { + state: 'fillStatesRanks', + mode: 'upgrade', + func: fillStatesRanks } ]) } @@ -40,6 +46,23 @@ interface OldState extends State { actions: Step[] } +async function fillStatesRanks (client: Client): Promise { + const txOp = new TxOperations(client, core.account.System) + const states = await client.findAll(process.class.State, { rank: { $exists: false } }) + let prevRank: Rank | undefined + for (const state of states) { + prevRank = makeRank(prevRank, undefined) + await txOp.update(state, { rank: prevRank }) + } + + const transitions = await client.findAll(process.class.Transition, { rank: { $exists: false } }) + prevRank = undefined + for (const transition of transitions) { + prevRank = makeRank(prevRank, undefined) + await txOp.update(transition, { rank: prevRank }) + } +} + async function migrateActionsFromStates (client: Client): Promise { const txOp = new TxOperations(client, core.account.System) const rollbackTransitions = await client.findAll(process.class.Transition, { to: null as any }) @@ -54,10 +77,12 @@ async function migrateActionsFromStates (client: Client): Promise { arr.push(transition) transitionsMap.set(transition.to, arr) } + let prevRank: Rank | undefined for (const state of states) { if (state.actions?.length > 0) { const transitions = transitionsMap.get(state._id) ?? [] if (transitions.length === 0) { + prevRank = makeRank(prevRank, undefined) await txOp.createDoc( process.class.Transition, core.space.Model, @@ -65,6 +90,7 @@ async function migrateActionsFromStates (client: Client): Promise { from: null, to: state._id, actions: state.actions, + rank: prevRank, trigger: process.trigger.OnExecutionStart, triggerParams: {}, process: state.process diff --git a/plugins/process-resources/src/components/ProcessesSection.svelte b/plugins/process-resources/src/components/ProcessesSection.svelte index 0483cf4198..dbd593f796 100644 --- a/plugins/process-resources/src/components/ProcessesSection.svelte +++ b/plugins/process-resources/src/components/ProcessesSection.svelte @@ -20,6 +20,7 @@ import { Process, State } from '@hcengineering/process' import { ButtonIcon, getCurrentLocation, Icon, IconAdd, Label, navigate } from '@hcengineering/ui' import process from '../plugin' + import { makeRank } from '@hcengineering/rank' export let masterTag: MasterTag @@ -38,6 +39,7 @@ core.space.Model, { process: id, + rank: makeRank(undefined, undefined), title: await translate(process.string.NewState, {}) }, initState @@ -47,6 +49,7 @@ from: null, to: initState, trigger: process.trigger.OnExecutionStart, + rank: makeRank(undefined, undefined), actions: [], triggerParams: {} }) diff --git a/plugins/process-resources/src/components/settings/AddTransitionPopup.svelte b/plugins/process-resources/src/components/settings/AddTransitionPopup.svelte index 3da14b0bd0..8586a91682 100644 --- a/plugins/process-resources/src/components/settings/AddTransitionPopup.svelte +++ b/plugins/process-resources/src/components/settings/AddTransitionPopup.svelte @@ -13,12 +13,13 @@ // limitations under the License. --> @@ -41,9 +49,11 @@
- {#each states as state (state._id)} - - {/each} + + + + + {#if !readonly} - {/each} + + + {@const transition = toTransition(value)} + + + {#if !readonly}