Repository navigation
chore(editor): Add Reka UI based Loading component - #22349
Conversation
caf49ef to
fb79a28
Compare
BundleMonUnchanged files (2)
No change in files bundle size Groups updated (2)
Final result: ✅ View report in BundleMon website ➡️ |
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
This comment has been minimized.
This comment has been minimized.
|
E2E Tests: n8n tests passed after 9m 9.4s Run Details
Groups
This message was posted automatically by
currents.dev | Integration Settings
|
There was a problem hiding this comment.
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]" |
There was a problem hiding this comment.
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 @@
+ <Primitive
+ v-if="loading"
+ as="div"
+ :class="['n8n-loading', `n8n-loading-${variant}`, $style.loading]"
+ aria-hidden="true"
+ >
</file context>
…/Loading.vue Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
| <Primitive | ||
| v-if="loading" | ||
| as="div" | ||
| :class="['n8n-loading', `n8n-loading-${variant}`, 'el-skeleton', $style.loading]" |
There was a problem hiding this comment.
we shouldn't mix css classes with modules
There was a problem hiding this comment.
we probably should remove the el-skeleton'
|
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? |
|
Most complex usages: Best test candidate: DataTableDetailsView or OAuthClientsTable - they combine multiple props including conditional loading and shrinkLast behavior. |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
Got released with |
* 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>
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
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
release/backport(if the PR is an urgent fix that needs to be backported)