From 2a205c294fc59fb9d72587b31ba74cb275eada09 Mon Sep 17 00:00:00 2001 From: "n8n-cat-bot[bot]" <283985454+n8n-cat-bot[bot]@users.noreply.github.com> Date: Fri, 25 Sep 2026 11:47:06 +0000 Subject: [PATCH] chore: Reuse the version-name detail helper for activity events (#39595) Co-authored-by: n8n-cat-bot[bot] --- .../__tests__/activity-event-relay.test.ts | 31 +++++++++++++++++++ .../src/events/relays/activity.event-relay.ts | 6 ++-- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/packages/cli/src/events/__tests__/activity-event-relay.test.ts b/packages/cli/src/events/__tests__/activity-event-relay.test.ts index 2caee8c3cfc..5c35b2b958e 100644 --- a/packages/cli/src/events/__tests__/activity-event-relay.test.ts +++ b/packages/cli/src/events/__tests__/activity-event-relay.test.ts @@ -414,6 +414,37 @@ describe('ActivityEventRelay', () => { ); }); + it.each([ + { label: 'null', name: null }, + { label: 'empty', name: '' }, + { label: 'long', name: 'v'.repeat(2_000) }, + ])('formats $label version names the same when publishing and updating', async ({ name }) => { + relayWith({ flagOverride: true }); + + eventService.emit('workflow-activated', { + user, + workflowId: 'workflow1', + workflow: mock({ + id: 'workflow1', + name: 'Lead enrichment', + activeVersion: mock({ name }), + }), + publicApi: false, + }); + eventService.emit('workflow-version-updated', { + user, + workflowId: 'workflow1', + workflowName: 'Lead enrichment', + versionId: 'version1', + versionName: name, + }); + await flushPromises(); + + expect(activityEventRepository.record).toHaveBeenCalledTimes(2); + const [[published], [updated]] = activityEventRepository.record.mock.calls; + expect(updated.data).toEqual({ versionId: 'version1', ...published.data }); + }); + it('records no version name when unpublishing, which clears the relation first', async () => { relayWith({ flagOverride: true }); diff --git a/packages/cli/src/events/relays/activity.event-relay.ts b/packages/cli/src/events/relays/activity.event-relay.ts index 79576be9483..70ae151001b 100644 --- a/packages/cli/src/events/relays/activity.event-relay.ts +++ b/packages/cli/src/events/relays/activity.event-relay.ts @@ -255,7 +255,7 @@ export class ActivityEventRelay extends EventRelay { workflowId, workflowName, versionId, - versionName, + versionName: updatedVersionName, }: RelayEventMap['workflow-version-updated']) { await this.record({ category: 'workflow', @@ -265,9 +265,7 @@ export class ActivityEventRelay extends EventRelay { resourceType: 'workflow', resourceId: workflowId, resourceName: workflowName, - // The name is unbounded user input. Left whole it can push `data` past the budget, and an - // over-budget payload is replaced entirely — which would take `versionId` with it. - data: { versionId, ...(versionName ? { versionName: clip(versionName) } : {}) }, + data: { versionId, ...versionName(updatedVersionName) }, }); }