Skip to content

chore(editor): Add Reka UI based Loading component - #22349

Merged
cstuncsik merged 14 commits into
masterfrom
ds-310-rebuild-loading-same-ui
Dec 1, 2025
Merged

cstuncsik merged 14 commits into
masterfrom
ds-310-rebuild-loading-same-ui

Conversation

@cstuncsik

@cstuncsik cstuncsik commented Nov 26, 2025 •

Copy link
Copy Markdown
Member

Summary

Refactor/rebuild N8nLoading component with Reka UI

Related Linear tickets, Github issues, and Community forum posts

https://linear.app/n8n/issue/DS-310/rebuild-loading-same-ui

Review / Merge checklist

  • PR title and summary are descriptive. (conventions)
  • Docs updated or follow-up ticket created.
  • Tests included.
  • PR Labeled with release/backport (if the PR is an urgent fix that needs to be backported)

@cstuncsik
cstuncsik force-pushed the ds-310-rebuild-loading-same-ui branch from caf49ef to fb79a28 Compare November 26, 2025 14:34
@n8n-assistant n8n-assistant Bot added the n8n team Authored by the n8n team label Nov 26, 2025
@bundlemon

bundlemon Bot commented Nov 26, 2025 •

Copy link
Copy Markdown

BundleMon

Unchanged files (2)
Status Path Size Limits
✅ WASM Dependencies
tree-sitter-bash.wasm
181.26KB -
✅ WASM Dependencies
tree-sitter.wasm
74.47KB -

No change in files bundle size

Groups updated (2)
Status Path Size Limits
✅ **/*.js
11.41MB (+119.32KB +1.03%) -
✅ **/*.css
232.04KB (+11.26KB +5.1%) -

Final result: ✅

View report in BundleMon website ➡️


Current branch size history | Target branch size history

@codecov

codecov Bot commented Nov 26, 2025 •

Copy link
Copy Markdown

@blacksmith-sh

This comment has been minimized.

@currents-bot

currents-bot Bot commented Nov 26, 2025 •

Copy link
Copy Markdown

✅

E2E Tests: n8n tests passed after 9m 9.4s

🟢 592 · 🔴 0 · ⚪️ 12 · 🟣 3

View Run Details

Run Details

  • Project: n8n

  • Groups: 2

  • Framework: Playwright

  • Run Status: Passed

  • Commit: 4b932cd

  • Spec files: 99

  • Overall tests: 604

  • Duration: 9m 9.4s

  • Parallelization: 9

Groups

GroupId Results Spec Files Progress
ui 🟢 541 · 🔴 0 · ⚪️ 12 · 🟣 3 92 / 92
ui:isolated 🟢 51 · 🔴 0 · ⚪️ 0 7 / 7


This message was posted automatically by currents.dev | Integration Settings

@cstuncsik
cstuncsik marked this pull request as ready for review November 27, 2025 06:41

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cubic analysis

2 issues found across 6 files

Prompt for AI agents (all 2 issues)

Check if these issues are valid — if so, understand the root cause of each and fix them.


<file name="packages/frontend/@n8n/design-system/src/v2/components/Loading/Loading.vue">

<violation number="1" location="packages/frontend/@n8n/design-system/src/v2/components/Loading/Loading.vue:36">
Rule violated: **Tests**

According to linked Linear issue DS-310, the loading wrapper must keep the legacy `.el-skeleton` class so existing consumers can keep querying `.el-skeleton.n8n-loading`. This change removes that class but the UI suite never asserts its presence, so the critical compatibility requirement lacks test coverage and regressions already slip through. Please add a test that fails when `.el-skeleton` is missing from the wrapper so the DS-310 contract stays enforced.</violation>

<violation number="2" location="packages/frontend/@n8n/design-system/src/v2/components/Loading/Loading.vue:36">
The wrapper no longer includes the legacy `.el-skeleton` class required by DS-310, so selectors like `.el-skeleton.n8n-loading` stop matching.</violation>
</file>

Linked issue analysis

Linked issue: DS-310: Rebuild Loading (same UI)

Status Acceptance criteria Notes
⚠️ All current props must be maintained with exact same defaults Defaults defined but cannot verify equality vs previous component
✅ Preserve .n8n-loading base class on wrapper element Wrapper adds literal n8n-loading class
✅ Preserve .n8n-loading-${variant} variant-specific class (e.g., .n8n-loading-h1) Wrapper includes literal n8n-loading- class
❌ Preserve .el-skeleton legacy class for migration compatibility No .el-skeleton class or mapping found in diffs
✅ h1 variant: when rows>1 and shrinkLast=true last row renders at 40% width h1Last class applied and .h1Last sets width 40%
✅ p variant: when rows>1 and shrinkLast=true last row renders at 61% width pLast class applied and .pLast sets width 61%
✅ custom variant: renders at 100% width and 100% height and uses CSS module class Uses $style.custom and .custom sets width/height 100% and global .n8n-loading-custom present
✅ Other variants (text,h3,caption,button,image,circle,rect) render single shaped items Variant styles defined and default branch renders single item with $style[variant]
✅ Row-based layout (default) when cols prop is 0 or omitted; renders rows items show* computed checks !props.cols and rows v-for used in templates
✅ Column-based layout when cols prop non-zero; renders cols items and ignores special variant handling showColsLayout used first; v-for cols renders items; special layouts bypassed
✅ Global CSS selector patterns must continue to work (consumers can target .n8n-loading) Component outputs literal global class names so global selectors can match
✅ Component queries using .n8n-loading must work Tests query for .n8n-loading and assert presence
❌ Combined selectors like .el-skeleton.n8n-loading must work during migration period No .el-skeleton class emitted so combined selector won't match
✅ Use Reka UI Primitive with as="div" for wrapper element Primitive imported and used with as="div" in template
✅ Apply CSS classes for styling (n8n-loading, n8n-loading-${variant}) Wrapper sets both literal global classes and module class
✅ Implement animation via CSS (pulsing animation) Keyframes + .animated class implemented and applied when animated true
✅ Generate skeleton items based on rows/cols props v-for over rows and cols present; tests assert item counts
✅ Apply variant-specific logic in component implementation Computed flags for h1/p/custom/cols and template branches implement logic
⚠️ Base styles (.n8n-loading-h1, .n8n-loading-p, .n8n-loading-custom) available as in CSS architecture Wrapper emits n8n-loading- classes, but module CSS defines variant styles hashed locally
✅ CSS variables usage for spacing/colors/animation Styles reference var(--spacing--2xs), var(--color--foreground), var(--radius) etc.
⚠️ Global override points (e.g. :global(.n8n-loading) div) remain possible Component emits global class names enabling overrides but no :global usage shown
✅ Element+ is not used anymore (remove ElSkeleton/ElSkeletonItem) No Element+ imports; uses reka-ui Primitive instead
✅ Accessibility: component uses aria-hidden="true" to hide from screen readers aria-hidden attribute present on wrapper Primitive
❌ Accessibility: container may use aria-busy="true" to indicate loading state aria-busy attribute not present in template or tests
⚠️ New code of the component, same UI as the previous version (AC) New implementation and stories/tests match behavior but exact parity unknown
✅ Element+ is not used anymore (AC) PR replaces Element+ with Reka Primitive
✅ Tests included (AC) Unit tests for rendering, variants, rows/cols, shrinkLast, animation added
❌ Code review (AC) No evidence of code review or review approvals in diffs/PR description

Reply to cubic to teach it or ask questions. Re-run a review with @cubic-dev-ai review this PR

<Primitive
v-if="loading"
as="div"
:class="['n8n-loading', `n8n-loading-${variant}`, $style.loading]"

@cubic-dev-ai cubic-dev-ai Bot Nov 27, 2025 •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rule violated: Tests

According to linked Linear issue DS-310, the loading wrapper must keep the legacy .el-skeleton class so existing consumers can keep querying .el-skeleton.n8n-loading. This change removes that class but the UI suite never asserts its presence, so the critical compatibility requirement lacks test coverage and regressions already slip through. Please add a test that fails when .el-skeleton is missing from the wrapper so the DS-310 contract stays enforced.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At packages/frontend/@n8n/design-system/src/v2/components/Loading/Loading.vue, line 36:

<comment>According to linked Linear issue DS-310, the loading wrapper must keep the legacy `.el-skeleton` class so existing consumers can keep querying `.el-skeleton.n8n-loading`. This change removes that class but the UI suite never asserts its presence, so the critical compatibility requirement lacks test coverage and regressions already slip through. Please add a test that fails when `.el-skeleton` is missing from the wrapper so the DS-310 contract stays enforced.</comment>

<file context>
@@ -0,0 +1,187 @@
+	&lt;Primitive
+		v-if=&quot;loading&quot;
+		as=&quot;div&quot;
+		:class=&quot;[&#39;n8n-loading&#39;, `n8n-loading-${variant}`, $style.loading]&quot;
+		aria-hidden=&quot;true&quot;
+	&gt;
</file context>
Fix with Cubic

Comment thread packages/frontend/@n8n/design-system/src/v2/components/Loading/Loading.vue Outdated
@github-actions
github-actions Bot requested a deployment to preview November 28, 2025 05:22 Abandoned
…/Loading.vue

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
@github-actions
github-actions Bot requested a deployment to preview November 28, 2025 09:10 Abandoned
<Primitive
v-if="loading"
as="div"
:class="['n8n-loading', `n8n-loading-${variant}`, 'el-skeleton', $style.loading]"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we shouldn't mix css classes with modules

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we probably should remove the el-skeleton'

@konstantintieber

Copy link
Copy Markdown
Contributor

I tried to compare these in storybook, but the story of the old loading component is not rendering for me :/

What would you recommend as a place to compare the new to the old one inside our frontend?

@cstuncsik

Copy link
Copy Markdown
Member Author

@konstantintieber

Most complex usages:
OAuthClientsTable.vue:81-82 - Uses loading, variant="h1" + variant="p", rows, shrink-last
AccessTokenConnectionInstructions.vue:110 - Multi-prop setup
DataTableDetailsView.vue:118-125 - loading=true, variant="h1", rows=10, shrink-last=false
ProjectRoleView.vue:395 - Dynamic rows based on scopes[type].length

Best test candidate: DataTableDetailsView or OAuthClientsTable - they combine multiple props including conditional loading and shrinkLast behavior.

@cstuncsik
cstuncsik requested a review from r00gm November 28, 2025 16:18
r00gm
r00gm previously approved these changes Dec 1, 2025
@github-actions

github-actions Bot commented Dec 1, 2025

Copy link
Copy Markdown
Contributor

@blacksmith-sh

This comment has been minimized.

@blacksmith-sh

This comment has been minimized.

@github-actions

github-actions Bot commented Dec 1, 2025

Copy link
Copy Markdown
Contributor

@cstuncsik
cstuncsik merged commit 3b5d4d6 into master Dec 1, 2025
34 of 36 checks passed
@cstuncsik
cstuncsik deleted the ds-310-rebuild-loading-same-ui branch December 1, 2025 13:52
@n8n-assistant

n8n-assistant Bot commented Dec 1, 2025

Copy link
Copy Markdown
Contributor

Got released with n8n@1.123.0

importcoderro added a commit to build-one-labs/n8n that referenced this pull request Dec 22, 2025
* feat(MCP Client Node): New node (n8n-io#21942)

* fix(Agent Node): Thinking model issue - undefined `.map` error (n8n-io#22046)

* feat(core): Add DeepSeek support to chat hub (no-changelog) (n8n-io#22037)

* test: Specify timezone in test data (no-changelog) (n8n-io#22134)

* feat(core): Add OpenRouter provider support for chat hub (no-changelog) (n8n-io#22094)

* feat(core): Add Groq provider support for chat hub (no-changelog) (n8n-io#22071)

* feat(core): Add Chat settings admin view (no-changelog) (n8n-io#22009)

* feat: Block UI updates for instance / project roles if provisioning enabed (n8n-io#22095)

* feat(core): Add xAI Grok provider support for chat hub (no-changelog) (n8n-io#22084)

* feat(core): Add Vercel AI Gateway provider support for chat hub (no-changelog) (n8n-io#22090)

* fix(core): Safely handle paths at Data Table CSV imports (no-changelog) (n8n-io#22139)

* feat(editor): CSV download support for data tables (n8n-io#22048)

* docs(editor): Create Tree component API spec (n8n-io#21580)

* refactor(core): Always use RunExecutionData factory (no-changelog) (n8n-io#22096)

Co-authored-by: Danny Martini <danny@n8n.io>

* refactor(core): Set up binary data table (n8n-io#22137)

* refactor(core): Update binary data config (n8n-io#22141)

* feat(core): Add new internal endpoints for draft/publish (no-changelog) (n8n-io#22105)

* chore: Hide Github document loader (deprecated) (n8n-io#22138)

* feat(core): Add more details to MCP errors and telemetry (no-changelog) (n8n-io#22118)

* feat(ai-builder): Add python script for workflow comparison (n8n-io#21927)

* feat(core): Add separate Azure API key and Entra ID providers (no-changelog) (n8n-io#22101)

* feat(editor): Add dismissable callout for scaling mode enabled customers (n8n-io#21897)

* fix(editor): Minor design fixes for the migration report (n8n-io#22110)

* feat(core): Shorten copy text on confirm provisioning dialog (n8n-io#22086)

* refactor(core): Decouple chathub binary data from core (n8n-io#22147)

* ci: Fix flaky tests and some docker run shenanigans (n8n-io#22148)

* fix(editor): Add responsiveness to the templates panel (n8n-io#22132)

* fix(n8n Form Node): Allow undefined formatDate (n8n-io#21811)

* fix(Google Cloud Firestore Node): Make the description for the Update Key for Upsert operation more clear (no-changelog) (n8n-io#21814)

* test: Address flakes in tags tests, add test for tag count persistence when reopening dropdown after save (n8n-io#22160)

* fix(OpenAI Node): Use new model for text classification (n8n-io#22130)

* test: Remove some isolated tests (n8n-io#22161)

* test: Fix broken test expectation (no-changelog) (n8n-io#22193)

* test: Fix flaky js task runner test (n8n-io#22146)

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>

* fix: Chat UI feedback 2 (no-changelog) (n8n-io#22109)

* feat(editor): Introduce chromatic modes (no-changelog) (n8n-io#22170)

* fix(ChatTrigger Node): Keep session ID when load previous session is on (n8n-io#22150)

* fix(editor): Ready to run v2 p2 rework (no-changelog) (n8n-io#22199)

* feat(editor): Minor UX improvements for MCP (no-changelog) (n8n-io#22131)

* test: Disable log colors in benchmark task runners (n8n-io#22211)

* fix(core): Restore `moment` to regular runners image (n8n-io#22212)

* fix: Improve logging for settings store (n8n-io#22216)

* ci: Fix author/commiter for automated PR (n8n-io#22221)

* chore: Add telemetry for user role provisioning (no changelog) (n8n-io#22158)

* chore(core): Execution context establishment hook registry (n8n-io#22098)

* fix(OpenAi Node): Fix grammar in audio operation descriptions (n8n-io#22041)

* fix: File attachment bugfixes (no-changelog) (n8n-io#22142)

Co-authored-by: Jaakko Husso <jaakko@n8n.io>

* feat: Add best practices for all builder categories (n8n-io#21943)

Co-authored-by: Michael Drury <michael.drury@n8n.io>

* fix: Improve json repair logic (n8n-io#22088)

* feat(core): Make user role provisioning available on enterprise (n8n-io#22166)

* fix(Salesforce Trigger Node): Fix Opportunity updated description (n8n-io#22169)

* feat(editor): Custom project roles Beta release (n8n-io#22228)

* test(ai-builder): Integrate structural workflow comparison (n8n-io#22209)

* 🚀 Release 1.122.0 (n8n-io#22237)

Co-authored-by: tomi <10324676+tomi@users.noreply.github.com>

* feat(editor): Rename draft/publish feature env variable (no-changelog) (n8n-io#22235)

* feat(core): Switch to structured destination node (no-changelog) (n8n-io#22143)

Co-authored-by: Danny Martini <danny@n8n.io>
Co-authored-by: Claude <noreply@anthropic.com>

* ci: Fix script to detect release (n8n-io#22242)

* fix: Renovate will now bump versions (n8n-io#22245)

* ci: Fix excessively deep type instantiation in `ChatHubMessageRepository` (n8n-io#22240)

* ci: Don't fail patch release if no changelog could be generated (n8n-io#22248)

* fix(editor): Missing duplicate workflow action on workflow list (n8n-io#22230)

* feat(core): Draft/Publish workflow endpoints follow up (no-changelog) (n8n-io#22246)

* feat(editor): Add medium font weight variable to CLAUDE.md (no-changelog) (n8n-io#22263)

* chore: Readd `minimumReleaseAge` (n8n-io#22265)

* feat(core): Create chat workflows in archived state (no-changelog) (n8n-io#22267)

* fix(editor): Preserve paired item data in pinned data (n8n-io#21417)

Co-authored-by: Claude <noreply@anthropic.com>

* fix(editor): Fix issue for blinking/jumping UI when switching projects (n8n-io#22256)

* feat: Reduce unauthentication information in settings endpoint further (n8n-io#22106)

* fix(core): Send prod workflow succeeded for wfs in projects (n8n-io#22223)

* fix(ai-builder): Keep existing pin data when modifying the workflow (n8n-io#22266)

* fix(editor): Fix sub-nodes connection labels counters  (n8n-io#21549)

Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>

* feat(core): Send the right activation mode for activate endpoint (no-changelog) (n8n-io#22276)

* fix: Update base image dependencies to latest security patches (n8n-io#22275)

* fix: Show correct date range in insight overview

* chore: Move to AGENTS.md file with agent instructions (n8n-io#22227)

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>

* feat: Add the time saved node (n8n-io#22269)

* fix(editor): Focus 'key' input when variable modal is open (no-changelog) (n8n-io#21762)

Co-authored-by: Nikhil Kuriakose <nikhilkuria@gmail.com>

* feat(core): Use personal projects for chat hub executions (no-changelog) (n8n-io#22231)

* feat(core): Use 'chat' and 'webhook' execution modes on chat hub (no-changelog) (n8n-io#22282)

* feat(core): Inject hooks into applicable trigger node properties for the node UI (n8n-io#22290)

* test: Fix workflow actions and canvas flakes (n8n-io#22297)

* fix(core): Add missing workflowId when creating base subworkflowworkflow additional data (n8n-io#22312)

* feat(Guardrails Node): Require Chat model only for LLM checks (n8n-io#22241)

* fix(editor, core): Fix display for binary data metadata origin (n8n-io#22270)

* fix: Fix bad written snapshot test (no-changelog)

* feat(core): Introduce `database` mode for binary data storage (n8n-io#22162)

* ci: Make e2e secrets not required (n8n-io#22330)

* feat(Azure AI Search Node): Add clear index option to Azure AI Search vector store (n8n-io#22183)

Co-authored-by: farzad528 <farzad528@users.noreply.github.com>
Co-authored-by: RomanDavydchuk <roman.davydchuk@n8n.io>

* fix(core): Update posthog proxy (no-changelog) (n8n-io#22328)

* chore(core): Context establishment hook setup (n8n-io#22293)

* fix(Git Node): Throw an error if the repository path is blocked (n8n-io#22253)

* feat(editor): Add new template setup experiment (no-changelog) (n8n-io#22332)

* fix: When chat session is reset, update session id (n8n-io#22288)

Co-authored-by: Michael Drury <michael.drury@n8n.io>

* fix(AI Agent Node): Unify memory management for streaming/non-streaming (n8n-io#22243)

* feat: Add time saved mode workflow setting (n8n-io#22343)

* fix: Enable streaming version of Respond To Webhook node (n8n-io#22350)

* fix(ai-builder): Fix import of multiple nodes with maxNode, add validation (n8n-io#22348)

* fix(Slack Node): Sort messages manually (n8n-io#21822)

* feat(Gemini Node): Add support for Nano Banana Pro model (n8n-io#22254)

* fix(HTTP Node): Handle Azure Storage Shared Key (n8n-io#22136)

* chore(editor): Implement translations for chat (n8n-io#22335)

* fix(editor): Chat UI feedback 3 (no-changelog) (n8n-io#22274)

* fix(core): Add response validation for requests during DCR (n8n-io#22076)

* docs: Fix broken link in Google Docs node (n8n-io#22197)

Co-authored-by: Jon <jonathan.bennetts@gmail.com>

* refactor(core): Remove admin API token scopes when user is demoted from admin to member via SSO (n8n-io#22359)

* feat(core): Clean up available tools on Chat hub (no-changelog) (n8n-io#22373)

* chore(editor): DropdownMenu component specs (no-changelog) (n8n-io#22229)

* docs: Add component specification for N8nInputNumber (n8n-io#22394)

* chore(editor): Add reka checkbox component (n8n-io#21813)

Co-authored-by: Csaba Tuncsik <csaba@n8n.io>

* ci: Add 1.x branch support to CI workflows (n8n-io#22361)

* ci: Add RC release type for v2 release candidates (n8n-io#22362)

* ci: Prevent RC versions from being promoted to stable/beta channels (n8n-io#22388)

* refactor(core, editor): Split logic based on payload type / manual execution type (n8n-io#22219)

Co-authored-by: Michael Siega <michael.siega@n8n.io>
Co-authored-by: mfsiega <93014743+mfsiega@users.noreply.github.com>

* docs: Add component specification and API documentation for N8nPagination (n8n-io#22085)

* fix(editor): Eval trigger node with data table works when underlying data changes (n8n-io#22389)

* feat(core): Use new workflow history in mcp tools (n8n-io#22384)

* fix(editor): Wording for migration rule detail table headers (n8n-io#22398)

* chore(editor): Update vue-flow packages (no-changelog) (n8n-io#22399)

* ci: Skip release notes trigger for RC versions (n8n-io#22403)

* feat(core): Update `activate` and `deactivate` public endpoints (no-changelog) (n8n-io#22298)

* ci: Auto-detect RC releases for orange logo and [RC] tab indicator (n8n-io#22411)

* chore: Fix typo in telemetry event (n8n-io#22392)

* fix: Bump node-forge and body-parser (n8n-io#22418)

* docs: Add component specification and API documentation for N8nInput (n8n-io#22082)

Co-authored-by: Claude <noreply@anthropic.com>

* fix(editor): Remove unwanted outlines when waiting for webhook event in light mode in new NDV (n8n-io#22425)

Co-authored-by: Michael Kret <michael.k@radency.com>

* fix(MCP Client Node): Fix selecting PKCE auth flow for some servers and request scopes from `scopes_requested` during DCR (n8n-io#22405)

* fix(core): Mark `''` and `[]` as empty when filtering numbers (n8n-io#22347)

* fix(editor): Avoid clearing EULA license key when closing dialog (n8n-io#22424)

Co-authored-by: Csaba Tuncsik <csaba@n8n.io>

* docs: Add component specification for N8nLoading with API definition and usage examples (n8n-io#22055)

* fix(editor): Stop proxying posthog events temporarily (no-changelog) (n8n-io#22442)

* fix(Gmail Node): Use Reply-To header when replying to a message (n8n-io#22145)

* feat(Form Node): Allow users to set a default value for form fields (n8n-io#22200)

* fix(core, editor): Support inclusive and exclusive destination node mode in the frontend and API (n8n-io#22244)

Co-authored-by: Danny Martini <danny@n8n.io>

* fix(core): Defer requirements check for Python runner in internal mode (n8n-io#22448)

* fix(Respond to Chat Node): Replace broken link with a correct one (no-changelog) (n8n-io#22406)

* fix(Sort Node): Periodic error when using Code sort type (n8n-io#22409)

* perf: Improve chat UI time-to-interactive (no-changelog) (n8n-io#22408)

* fix(editor): Fix connector line appearing above node output circle (no-changelog) (n8n-io#22443)

* fix(core): Introduce batch workflow rule to fix subworkflow with wait node detection (n8n-io#22447)

* feat(core): Introduce workflowPublishHistory table (no-changelog) (n8n-io#22043)

Co-authored-by: Ricardo Espinoza <ricardo@n8n.io>

* feat(core): Only fetch credentials available in user's personal project on Chat (no-changelog) (n8n-io#22465)

* test(ai-builder): Add pairwise evaluations (no-changelog) (n8n-io#22438)

Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>

* feat(editor): Show loading state in model selector (no-changelog) (n8n-io#22462)

* build: Address TS error regarding Vue slots (n8n-io#22446)

* chore(editor): Add Reka UI based Pagination component (n8n-io#22167)

* fix(core): SSO user role provisioning csv export dialog is not always shown when it should (no-changelog) (n8n-io#22416)

* fix(core): OIDC form breaks when enabling OIDC while SAML is active (n8n-io#22463)

* chore(editor): Add Reka UI based Input component (n8n-io#22339)

* feat(core): Add workflowPublishHistory relation to history endpoints (no-changelog) (n8n-io#22466)

* fix(PostgreSQL Node): Input items with array being modified (n8n-io#22426)

* chore(Qdrant Vector Store Node): Update Qdrant logo (no-changelog) (n8n-io#22504)

* feat(core): Add get version public endpoint (n8n-io#22407)

* fix: Do not add publish history relation for get version endpoint (no-changelog) (n8n-io#22507)

* feat(ai-builder): Implement Core Subgraph Infrastructure (no-changelog) (n8n-io#22325)

Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>

* chore: Change killBehavior to `forceful` in launch.json  (no-changelog) (n8n-io#22445)

* feat: Add entries to context menu to copy webhook's urls (n8n-io#21769)

* fix(HTTP Request Node): Detect and handle non-UTF-8 response encodings (n8n-io#20889)

* chore: Update story titles for Checkbox and Select components (n8n-io#22512)

* docs: Add component specification and usage examples for N8nPopover (n8n-io#22433)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* chore(editor): Add Reka UI based Tooltip component (n8n-io#22326)

* fix: Detect workflow calling itself expression in migration report (n8n-io#22516)

* fix(editor): Fix editor pan / zoom when inserting nodes (n8n-io#22401)

* fix: Pin n8n packages to workspace version (n8n-io#22460)

* test(Google Calendar Node): Fix unit test depending on current timestamp (n8n-io#22522)

* feat: Allow configuring workflow for time saved capture by node (n8n-io#22386)

* fix(core): Make chat title generation work on instances that don't save executions (no-changelog) (n8n-io#22518)

* fix: Support resolving $fromAI in vector store tools (n8n-io#22457)

* chore(editor): Tweak font size in chat UI (n8n-io#22534)

* fix: Fix error handling in sending chat message (no-changelog) (n8n-io#22515)

Co-authored-by: Jaakko Husso <jaakko@n8n.io>

* refactor(core): Deprecate `workflow.active` field (n8n-io#22533)

* feat: Update migration guide with changes in cli and external hooks (no-changelog) (n8n-io#22525)

* fix(core): Prevent credentials saving if missing required properties (n8n-io#22213)

* fix: Improve insights tests execution failure visibility (n8n-io#22538)

* chore(editor): Add Reka UI based Loading component (n8n-io#22349)

Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>

* feat(ai-builder): Using templates to improve generation (n8n-io#22521)

* feat(core): Deactivate crashed workflows (n8n-io#21888)

Co-authored-by: Artem Sorokin <artem@n8n.io>

* ci: Move backend-test-utils to dev dependency, remove docker base cache (n8n-io#22540)

* chore(editor): Add Reka UI based number input component (n8n-io#22485)

* chore: Update langchain (n8n-io#22500)

* fix(editor): Standardize CSS class naming conventions across new design system components (n8n-io#22551)

* chore: Initial V2 changes (n8n-io#22553)

Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
Co-authored-by: yehorkardash <yehor.kardash@n8n.io>
Co-authored-by: Daria <daria.staferova@n8n.io>
Co-authored-by: Svetoslav Dekov <svetoslav.dekov@n8n.io>
Co-authored-by: Nikhil Kuriakose <nikhilkuria@gmail.com>
Co-authored-by: Charlie Kolb <charlie@n8n.io>

* ci: Fix rc versioning to properly bump major version (n8n-io#22603)

* 🚀 Release 2.0.0-rc.0 (n8n-io#22613)

Co-authored-by: tomi <10324676+tomi@users.noreply.github.com>

* fix(editor): Fix displaying of workflow publish info (no-changelog) (n8n-io#22605)

* feat(editor): Sidebar redesign (n8n-io#22395)

Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
Co-authored-by: Daria <daria.staferova@n8n.io>

* feat: Stop bumping `versionId` on every workflow change (no-changelog) (n8n-io#22602)

* feat(core): Block access to env in code and expressions by default (n8n-io#22643)

* feat(core): Introduce native Python code tool for AI agent (n8n-io#22658)

* test: Disable banners for e2e tests (n8n-io#22691)

Co-authored-by: Declan Carroll <declan@n8n.io>

* feat(editor): Update command bar with publish wf flow (no-changelog) (n8n-io#22688)

* fix(core)!: Make runners the only Code node option (n8n-io#22689)

* feat(editor): Update frontend external hooks with publish/unpublish (no-changelog) (n8n-io#22693)

* fix(core): Make sub-workflows with waits return correct data to parents (n8n-io#22611)

Co-authored-by: Claude <noreply@anthropic.com>

* feat: Forbid creating active workflows (no-changelog) (n8n-io#22718)

* docs: Remove incorrect changelog

* 🚀 Release 2.0.0-rc.1 (n8n-io#22729)

Co-authored-by: tomi <10324676+tomi@users.noreply.github.com>

* fix(core): Prevent execution data from being overwritten on manual workflow resume (n8n-io#22665)

Co-authored-by: Claude <noreply@anthropic.com>

* 🚀 Release 2.0.0-rc.2 (n8n-io#22735)

Co-authored-by: tomi <10324676+tomi@users.noreply.github.com>

* fix(core): Address review feedback for sub-workflow wait fix (n8n-io#22745)

* refactor(core): Mark native Python as stable (n8n-io#22739)

* fix(editor): Address publish wf UI feedback (no-changelog) (n8n-io#22671)

* feat(editor): Improve node component visual states (n8n-io#20242)

Co-authored-by: Giulio Andreini <g.andreini@gmail.com>
Co-authored-by: Rob <robtf9@icloud.com>
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
Co-authored-by: Tomi Turtiainen <10324676+tomi@users.noreply.github.com>
Co-authored-by: yehorkardash <yehor.kardash@n8n.io>
Co-authored-by: Daria <daria.staferova@n8n.io>

* 🚀 Release 2.0.0-rc.3 (n8n-io#22757)

Co-authored-by: tomi <10324676+tomi@users.noreply.github.com>

* fix(editor): Improve loading states for publish workflow (no-changelog) (n8n-io#22755)

* feat(n8n Node): Update operations (no-changelog) (n8n-io#22740)

* fix(editor): Bind color-scheme to app theme setting (n8n-io#22774)

* fix(editor): Fix display of publish info for migrated records (no-changelog) (n8n-io#22791)

* fix(editor): Design tweaks for publish modals (n8n-io#22694)

Co-authored-by: Svetoslav Dekov <svetoslav.dekov@n8n.io>

* chore(core): Update mcp lingo around active workflows (no-changelog) (n8n-io#22810)

* fix(editor): Replace activate with publish in trigger nodes (no-changelog) (n8n-io#22811)

* fix: Security patches (n8n-io#22748)

* fix(core): Do not prevent credential save if property has default value (n8n-io#22720)

* fix(editor): Fix animation border radii in non-rectangular nodes (no-changelog) (n8n-io#22828)

* feat(editor): Add message active workflow usage (no-changelog) (n8n-io#22824)

* feat: Include active version id in `workflowActivated` broadcast event (no-changelog) (n8n-io#22805)

Co-authored-by: Svetoslav Dekov <svetoslav.dekov@n8n.io>

* fix: Allow the activation of workflows with the `errorTrigger` and the `executionWorkflowTrigger` trigger (no-changelog) (n8n-io#22019)

Co-authored-by: Daria Staferova <daria.staferova@n8n.io>

* fix(editor): Use active workflow nodes to determine wf inputs when executing by parent (no-changelog) (n8n-io#22907)

* fix(core): Update migration that activate workflows with executeWorkflowTrigger (n8n-io#22860)

* fix: Add `HOME` env var to distroless runners image (n8n-io#22796)

* refactor(core): Make Sentry init non-fatal for JS runner (n8n-io#22800)

* fix(core): Allowlist `HOME` env var in JS runner config (n8n-io#22839)

* fix: Security patches for jws (n8n-io#22918)

* chore: Update @modelcontextprotocol/sdk (n8n-io#22823)

* chore: Clean up deprecation warnings (n8n-io#22914)

* fix: Update checksum after restoring workflow (n8n-io#22920)

* fix(core): Exclude Sub-workflow and Error triggers from triggerCount again (no-changelog) (n8n-io#22906)

* feat: Validate nodes before activating (n8n-io#22916)

* fix(editor): Fix workflow list endpoint triggerNodeType filter query (no-changelog) (n8n-io#22912)

* fix: Fetch workflow before updating checksum (n8n-io#22927)

* chore: Remove feature flag for NDV overhaul (n8n-io#22924)

Co-authored-by: Shireen Missi <shireen@n8n.io>

* 🚀 Release 2.0.0 (n8n-io#22939)

Co-authored-by: tomi <10324676+tomi@users.noreply.github.com>

* fix(core): Add missing env vars to internal mode (n8n-io#22965)

* fix: Add version history records when importing workflows (n8n-io#22974)

* chore: Upgrade launcher to 1.4.2 (n8n-io#22995)

* fix(core): Don't resume parent workflow when the child workflow goes into waiting (n8n-io#22964)

* fix: Fix checksum hashing when WebCrypto is unavailable (n8n-io#23024)

* ci: Remove release exclusion from PR's (n8n-io#23033)

* Remove unused import

* 🚀 Release 2.0.1 (n8n-io#23041)

Co-authored-by: ivov <44588767+ivov@users.noreply.github.com>

* fix: Backfill missing workflow history records (n8n-io#23070)

* fix: Make sure duplicating workflows creates them as unpublished (no-changelog) (n8n-io#23113)

* 🚀 Release 2.0.2 (n8n-io#23131)

Co-authored-by: tomi <10324676+tomi@users.noreply.github.com>

* fix: Only support specified git config keys in Git node (n8n-io#23264)

* fix(core): Error running evaluations in queue mode (n8n-io#23248)

* 🚀 Release 2.0.3 (n8n-io#23351)

Co-authored-by: CharlieKolb <13814565+CharlieKolb@users.noreply.github.com>

* B1-349 Fix duplicate

---------

Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>
Co-authored-by: RomanDavydchuk <roman.davydchuk@n8n.io>
Co-authored-by: Michael Drury <me@michaeldrury.co.uk>
Co-authored-by: Jaakko Husso <jaakko@n8n.io>
Co-authored-by: mfsiega <93014743+mfsiega@users.noreply.github.com>
Co-authored-by: Stephen Wright <sjw948@gmail.com>
Co-authored-by: Nikhil Kuriakose <nikhilkuria@gmail.com>
Co-authored-by: Robert Squires <robtf9@icloud.com>
Co-authored-by: Danny Martini <danny@n8n.io>
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
Co-authored-by: Daria <daria.staferova@n8n.io>
Co-authored-by: Milorad FIlipović <milorad@n8n.io>
Co-authored-by: Benjamin Schroth <68321970+schrothbn@users.noreply.github.com>
Co-authored-by: Guillaume Jacquart <jacquart.guillaume@gmail.com>
Co-authored-by: Konstantin Tieber <46342664+konstantintieber@users.noreply.github.com>
Co-authored-by: Declan Carroll <declan@n8n.io>
Co-authored-by: yehorkardash <yehor.kardash@n8n.io>
Co-authored-by: Artem Sorokin <38620398+seemewalkin@users.noreply.github.com>
Co-authored-by: Tomi Turtiainen <10324676+tomi@users.noreply.github.com>
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
Co-authored-by: Suguru Inoue <suguru@n8n.io>
Co-authored-by: Romeo Balta <7095569+romeobalta@users.noreply.github.com>
Co-authored-by: Andreas Fitzek <andreas.fitzek@n8n.io>
Co-authored-by: krisn0x <10799186+krisn0x@users.noreply.github.com>
Co-authored-by: Mutasem Aldmour <4711238+mutdmour@users.noreply.github.com>
Co-authored-by: Michael Drury <michael.drury@n8n.io>
Co-authored-by: Raúl Gómez Morales <raul00gm@gmail.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Svetoslav Dekov <svetoslav.dekov@n8n.io>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Csaba Tuncsik <csaba@n8n.io>
Co-authored-by: Dawid Myslak <dawid.myslak@gmail.com>
Co-authored-by: Irénée <irenee.ajeneza@n8n.io>
Co-authored-by: oleg <me@olegivaniv.com>
Co-authored-by: Farzad Sunavala <40604067+farzad528@users.noreply.github.com>
Co-authored-by: farzad528 <farzad528@users.noreply.github.com>
Co-authored-by: karthi7 <139566887+Karthim8@users.noreply.github.com>
Co-authored-by: Jon <jonathan.bennetts@gmail.com>
Co-authored-by: Michael Siega <michael.siega@n8n.io>
Co-authored-by: Alex Grozav <alex@grozav.com>
Co-authored-by: Michael Kret <michael.k@radency.com>
Co-authored-by: Marc Littlemore <MarcL@users.noreply.github.com>
Co-authored-by: Charlie Kolb <charlie@n8n.io>
Co-authored-by: Ricardo Espinoza <ricardo@n8n.io>
Co-authored-by: Anush <anushshetty90@gmail.com>
Co-authored-by: Michael Kret <88898367+michael-radency@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Frank Prößdorf <frank@n8n.io>
Co-authored-by: Artem Sorokin <artem@n8n.io>
Co-authored-by: Tuukka Kantola <Tuukkaa@users.noreply.github.com>
Co-authored-by: Giulio Andreini <g.andreini@gmail.com>
Co-authored-by: Elias Meire <elias@meire.dev>
Co-authored-by: Shireen Missi <shireen@n8n.io>
Co-authored-by: ivov <44588767+ivov@users.noreply.github.com>
Co-authored-by: Dimitri Lavrenük <20122620+dlavrenuek@users.noreply.github.com>
Co-authored-by: Eugene <eugene@n8n.io>
Co-authored-by: CharlieKolb <13814565+CharlieKolb@users.noreply.github.com>
ThorStarlord pushed a commit to ThorStarlord/n8n that referenced this pull request Apr 24, 2026
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>

This branch was successfully deployed

1 active deployment
preview — 4b932cde Deployed Dec 1, 2025 by github-actions[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

n8n team Authored by the n8n team Released

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants