From bce40f26fb299b698ffdcc572975bceffff0501e Mon Sep 17 00:00:00 2001 From: "n8n-assistant[bot]" <100856346+n8n-assistant[bot]@users.noreply.github.com> Date: Tue, 30 Jun 2026 14:32:36 +0100 Subject: [PATCH] feat(editor): Add personalized Instance AI prompt suggestions (no-changelog) (backport to release-candidate/2.29.x) (#33292) Co-authored-by: Romeo Balta <7095569+romeobalta@users.noreply.github.com> --- .../frontend/@n8n/i18n/src/locales/en.json | 4 +- .../src/app/constants/experiments.ts | 2 +- ...nceAiPersonalizedPromptSuggestions.test.ts | 2 + ...nstanceAiPersonalizedPromptSuggestions.vue | 139 +++++++++++++----- ...ance-ai-personalized-prompt-suggestions.md | 19 ++- .../ai/instanceAi/InstanceAiEmptyView.vue | 6 +- .../__tests__/InstanceAiEmptyView.test.ts | 9 +- .../__tests__/InstanceAiInput.test.ts | 4 +- ...tanceAiPromptSuggestions.telemetry.test.ts | 4 +- .../instanceAi/components/InstanceAiInput.vue | 6 +- 10 files changed, 148 insertions(+), 47 deletions(-) diff --git a/packages/frontend/@n8n/i18n/src/locales/en.json b/packages/frontend/@n8n/i18n/src/locales/en.json index e9be900ded1..75480df5f31 100644 --- a/packages/frontend/@n8n/i18n/src/locales/en.json +++ b/packages/frontend/@n8n/i18n/src/locales/en.json @@ -1255,8 +1255,10 @@ "experiments.instanceAiPersonalizedPromptSuggestions.fallbackSuggestions.qualifyInboundLeads.description": "Research, score, and route new leads.", "experiments.instanceAiPersonalizedPromptSuggestions.fallbackSuggestions.scheduleSocialPosts.description": "Turn weekly ideas into scheduled posts.", "experiments.instanceAiPersonalizedPromptSuggestions.fallbackSuggestions.whatsappSupportAgent.description": "Reply to common support questions instantly.", - "experiments.instanceAiPersonalizedPromptSuggestions.heading": "Suggested for you", + "experiments.instanceAiPersonalizedPromptSuggestions.heading": "Start from an example", + "experiments.instanceAiPersonalizedPromptSuggestions.helper": "Picked for you. Change anything.", "experiments.instanceAiPersonalizedPromptSuggestions.seeMore": "See more", + "experiments.instanceAiPersonalizedPromptSuggestions.input.placeholder": "Tip: Ask me for suggestions if you're not sure what to build", "experiments.instanceAiSplitEmptyState.canvas.ready": "Ready when you are", "experiments.instanceAiSplitEmptyState.canvas.tip": "You can build new automations, edit existing ones, or ask questions", "experiments.instanceAiSplitEmptyState.canvas.tipLabel": "Tip:", diff --git a/packages/frontend/editor-ui/src/app/constants/experiments.ts b/packages/frontend/editor-ui/src/app/constants/experiments.ts index 0712bf78bb1..7b8e3f9d259 100644 --- a/packages/frontend/editor-ui/src/app/constants/experiments.ts +++ b/packages/frontend/editor-ui/src/app/constants/experiments.ts @@ -115,7 +115,7 @@ export const INSTANCE_AI_WORKFLOW_PREVIEW_SUGGESTIONS_EXPERIMENT = createExperim '087_instance_ai_workflow_preview_suggestions', ); export const INSTANCE_AI_PERSONALIZED_PROMPT_SUGGESTIONS_EXPERIMENT = createExperiment( - '090_instance_ai_personalized_prompt_suggestions', + '093_instance_ai_personalized_prompt_suggestions', { control: 'control', variantCards: 'variant-cards', diff --git a/packages/frontend/editor-ui/src/experiments/instanceAiPersonalizedPromptSuggestions/components/InstanceAiPersonalizedPromptSuggestions.test.ts b/packages/frontend/editor-ui/src/experiments/instanceAiPersonalizedPromptSuggestions/components/InstanceAiPersonalizedPromptSuggestions.test.ts index 24dcf1aec29..2f32402fb2a 100644 --- a/packages/frontend/editor-ui/src/experiments/instanceAiPersonalizedPromptSuggestions/components/InstanceAiPersonalizedPromptSuggestions.test.ts +++ b/packages/frontend/editor-ui/src/experiments/instanceAiPersonalizedPromptSuggestions/components/InstanceAiPersonalizedPromptSuggestions.test.ts @@ -81,6 +81,8 @@ describe('InstanceAiPersonalizedPromptSuggestions', () => { it('renders cards with titles and descriptions', () => { const { getByText } = renderComponent(); + expect(getByText('Start from an example')).toBeVisible(); + expect(getByText('Picked for you. Change anything.')).toBeVisible(); expect(getByText('Qualify hot leads')).toBeVisible(); expect(getByText('Score new form submissions and assign the best ones')).toBeVisible(); }); diff --git a/packages/frontend/editor-ui/src/experiments/instanceAiPersonalizedPromptSuggestions/components/InstanceAiPersonalizedPromptSuggestions.vue b/packages/frontend/editor-ui/src/experiments/instanceAiPersonalizedPromptSuggestions/components/InstanceAiPersonalizedPromptSuggestions.vue index de24815deb2..63075bb5b37 100644 --- a/packages/frontend/editor-ui/src/experiments/instanceAiPersonalizedPromptSuggestions/components/InstanceAiPersonalizedPromptSuggestions.vue +++ b/packages/frontend/editor-ui/src/experiments/instanceAiPersonalizedPromptSuggestions/components/InstanceAiPersonalizedPromptSuggestions.vue @@ -1,6 +1,7 @@