From 8729162f6fe2e0ffdc3fc08e34b579f4f7aebf40 Mon Sep 17 00:00:00 2001 From: aalises Date: Sat, 25 Jul 2026 16:56:48 +0200 Subject: [PATCH] feat(editor): redesign AI Assistant settings --- .../SettingsPageHeader.test.ts | 13 + .../SettingsPageHeader.vue | 14 +- .../frontend/@n8n/i18n/src/locales/en.json | 147 ++- .../__tests__/SettingsInstanceAiView.test.ts | 1168 ++++++++++++++++- .../instanceAiSettings.store.test.ts | 77 +- .../components/settings/AdvancedSection.vue | 39 - .../components/settings/ConnectionDialog.vue | 691 ++++++++++ .../components/settings/ConnectionFields.vue | 48 + .../components/settings/ModelSection.vue | 69 - .../components/settings/SandboxSection.vue | 259 ---- .../components/settings/SearchSection.vue | 101 -- .../__tests__/ConnectionDialog.test.ts | 312 +++++ .../components/settings/useSettingsField.ts | 64 - .../composables/useInstanceAiSetupSteps.ts | 21 + .../composables/useInstanceCredentialTest.ts | 112 ++ .../src/features/ai/instanceAi/constants.ts | 8 + .../ai/instanceAi/instanceAi.settings.api.ts | 12 +- .../ai/instanceAi/instanceAiSettings.store.ts | 160 +-- .../ai/instanceAi/module.descriptor.ts | 10 + .../views/SettingsInstanceAiView.vue | 646 +++++++-- 20 files changed, 3111 insertions(+), 860 deletions(-) delete mode 100644 packages/frontend/editor-ui/src/features/ai/instanceAi/components/settings/AdvancedSection.vue create mode 100644 packages/frontend/editor-ui/src/features/ai/instanceAi/components/settings/ConnectionDialog.vue create mode 100644 packages/frontend/editor-ui/src/features/ai/instanceAi/components/settings/ConnectionFields.vue delete mode 100644 packages/frontend/editor-ui/src/features/ai/instanceAi/components/settings/ModelSection.vue delete mode 100644 packages/frontend/editor-ui/src/features/ai/instanceAi/components/settings/SandboxSection.vue delete mode 100644 packages/frontend/editor-ui/src/features/ai/instanceAi/components/settings/SearchSection.vue create mode 100644 packages/frontend/editor-ui/src/features/ai/instanceAi/components/settings/__tests__/ConnectionDialog.test.ts delete mode 100644 packages/frontend/editor-ui/src/features/ai/instanceAi/components/settings/useSettingsField.ts create mode 100644 packages/frontend/editor-ui/src/features/ai/instanceAi/composables/useInstanceAiSetupSteps.ts create mode 100644 packages/frontend/editor-ui/src/features/ai/instanceAi/composables/useInstanceCredentialTest.ts diff --git a/packages/frontend/@n8n/design-system/src/components/N8nSettingsPageHeader/SettingsPageHeader.test.ts b/packages/frontend/@n8n/design-system/src/components/N8nSettingsPageHeader/SettingsPageHeader.test.ts index b729c41b422..2cd7560094f 100644 --- a/packages/frontend/@n8n/design-system/src/components/N8nSettingsPageHeader/SettingsPageHeader.test.ts +++ b/packages/frontend/@n8n/design-system/src/components/N8nSettingsPageHeader/SettingsPageHeader.test.ts @@ -11,6 +11,19 @@ describe('N8nSettingsPageHeader', () => { expect(title.tagName).toBe('H1'); }); + it('renders the titleTrailing slot alongside the title', () => { + render(N8nSettingsPageHeader, { + props: { title: 'This instance', showDocsLink: false }, + slots: { titleTrailing: 'Preview' }, + }); + + const title = screen.getByText('This instance'); + const trailing = screen.getByTestId('trailing'); + expect(title).toBeInTheDocument(); + expect(trailing).toHaveTextContent('Preview'); + expect(title.parentElement).toBe(trailing.parentElement); + }); + it('renders the title with the requested heading tag', () => { render(N8nSettingsPageHeader, { props: { title: 'This instance', headingTag: 'h2', showDocsLink: false }, diff --git a/packages/frontend/@n8n/design-system/src/components/N8nSettingsPageHeader/SettingsPageHeader.vue b/packages/frontend/@n8n/design-system/src/components/N8nSettingsPageHeader/SettingsPageHeader.vue index eda8004976c..aa9b3dbe2b3 100644 --- a/packages/frontend/@n8n/design-system/src/components/N8nSettingsPageHeader/SettingsPageHeader.vue +++ b/packages/frontend/@n8n/design-system/src/components/N8nSettingsPageHeader/SettingsPageHeader.vue @@ -55,7 +55,13 @@ if (import.meta.env.DEV) {