Skip to content

feat(editor): In setup panel only mark credentials as completed if they are tested#25658

Merged
RicardoE105 merged 10 commits intomasterfrom
ado-4817-only-mark-step-as-completed-if-credentials-work
Feb 18, 2026
Merged

feat(editor): In setup panel only mark credentials as completed if they are tested#25658
RicardoE105 merged 10 commits intomasterfrom
ado-4817-only-mark-step-as-completed-if-credentials-work

Conversation

@RicardoE105
Copy link
Contributor

@RicardoE105 RicardoE105 commented Feb 11, 2026

Summary

Previously, the setup panel marked credential cards as complete as soon as a credential was selected, without verifying that the credential actually works. This could mislead users into thinking their workflow is properly configured when credentials are invalid.

Now, credential cards in the setup panel only show the checkmark after a background credential test
succeeds:

  • When a credential is selected from the dropdown, a background test is triggered automatically
  • When a credential is saved/tested in the credential modal, the pending state is cleared on success
  • On page refresh, all pre-existing credentials are re-tested in the background
  • Failed or in-flight tests keep the card in an incomplete state

Related Linear tickets, Github issues, and Community forum posts

https://linear.app/n8n/issue/ADO-4817/only-mark-step-as-completed-if-credentials-work

Review / Merge checklist

@RicardoE105 RicardoE105 changed the title In setup panel only mark credentials as completed if they are tested feat(editor): In setup panel only mark credentials as completed if they are tested Feb 11, 2026
@codecov
Copy link

codecov bot commented Feb 11, 2026

Codecov Report

❌ Patch coverage is 61.83206% with 50 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
...es/setupPanel/composables/useWorkflowSetupState.ts 55.84% 34 Missing ⚠️
...r-ui/src/features/credentials/credentials.store.ts 27.27% 16 Missing ⚠️

📢 Thoughts on this report? Let us know!

@blacksmith-sh

This comment has been minimized.

@codecov
Copy link

codecov bot commented Feb 11, 2026

Bundle Report

Changes will increase total bundle size by 128.79kB (0.31%) ⬆️. This is within the configured threshold ✅

Detailed changes
Bundle name Size Change
editor-ui-esm 42.22MB 128.79kB (0.31%) ⬆️

Affected Assets, Files, and Routes:

view changes for bundle: editor-ui-esm

Assets Changed:

Asset Name Size Change Total Size Change (%)
assets/worker-*.js -2.9MB 13.37kB -99.54%
assets/worker-*.js 2.9MB 2.91MB 21685.46% ⚠️
assets/constants-*.js 703 bytes 2.88MB 0.02%
assets/constants-*.js 80 bytes 1.98kB 4.21%
assets/src-*.js 28.88kB 2.22MB 1.32%
assets/DataTableDetailsView-*.js 30 bytes 1.59MB 0.0%
assets/ParameterInputList-*.js 1.55kB 1.46MB 0.11%
assets/index-*.js 2.34kB 1.12MB 0.21%
assets/RunData-*.js 2 bytes 1.06MB 0.0%
assets/users.store-*.js 4.73kB 1.04MB 0.46%
assets/index-*.css -600 bytes 765.91kB -0.08%
assets/ChatView-*.js -544 bytes 655.22kB -0.08%
assets/_MapCache-*.js 1.71kB 569.06kB 0.3%
assets/src-*.css 18.37kB 469.24kB 4.07%
assets/useCanvasMapping-*.js 345 bytes 439.92kB 0.08%
assets/WorkflowsView-*.js 260 bytes 149.85kB 0.17%
assets/NodeView-*.js 5.65kB 129.33kB 4.57%
assets/nodeCreator.store-*.js 46 bytes 115.61kB 0.04%
assets/useCanvasMapping-*.css 295 bytes 112.84kB 0.26%
assets/router-*.js 377 bytes 104.48kB 0.36%
assets/NodeCreator-*.js 1 bytes 100.76kB 0.0%
assets/WorkflowLayout-*.js 23 bytes 97.11kB 0.02%
assets/LogsPanel-*.js 1 bytes 92.03kB 0.0%
assets/ChatView-*.css 60 bytes 85.81kB 0.07%
assets/LogsPanel-*.css 20 bytes 73.12kB 0.03%
assets/SettingsLdapView-*.js 1 bytes 71.02kB 0.0%
assets/AddDataTableModal-*.js 1.32kB 63.03kB 2.14%
assets/TriggerPanel-*.js 2 bytes 56.98kB 0.0%
assets/SettingsSso-*.js 1 bytes 50.33kB 0.0%
assets/chat.store-*.js 2.68kB 48.4kB 5.86% ⚠️
assets/SettingsMCPView-*.js 2 bytes 47.47kB 0.0%
assets/useLogsTreeExpand-*.js 1 bytes 38.76kB 0.0%
assets/NodeView-*.css -325 bytes 37.25kB -0.86%
assets/RunDataTable-*.js 1 bytes 31.67kB 0.0%
assets/AppSidebar-*.js 101 bytes 30.31kB 0.33%
assets/useCustomAgent-*.js 5.01kB 27.93kB 21.84% ⚠️
assets/ResourcesListLayout-*.js 1 bytes 27.49kB 0.0%
assets/SettingsSecretsProviders.ee-*.js 258 bytes 21.98kB 1.19%
assets/ToolsManagerModal-*.js (New) 20.78kB 20.78kB 100.0% 🚀
assets/SettingsUsageAndPlan-*.js 1 bytes 18.89kB 0.01%
assets/DemoDiffView-*.js 41 bytes 18.71kB 0.22%
assets/MainSidebarHeader-*.js 1 bytes 18.29kB 0.01%
assets/SettingsLogStreamingView-*.js 1 bytes 17.23kB 0.01%
assets/SecuritySettings-*.js 1.45kB 17.15kB 9.2% ⚠️
assets/WorkflowExecutionsView-*.css -72 bytes 16.63kB -0.43%
assets/AgentEditorModal-*.js 604 bytes 14.99kB 4.2%
assets/AppSidebar-*.css 104 bytes 13.76kB 0.76%
assets/CredentialPicker-*.js 106 bytes 13.53kB 0.79%
assets/SigninView-*.js 1 bytes 13.4kB 0.01%
assets/TemplatesCollectionView-*.js 1 bytes 13.35kB 0.01%
assets/ProjectSharing-*.js 409 bytes 12.3kB 3.44%
assets/DataTableView-*.js 30 bytes 12.1kB 0.25%
assets/ToolSettingsContent-*.js (New) 12.08kB 12.08kB 100.0% 🚀
assets/ToolsManagerModal-*.css (New) 10.32kB 10.32kB 100.0% 🚀
assets/useCustomAgent-*.css 3.4kB 10.07kB 50.9% ⚠️
assets/OAuthConsentView-*.js 1 bytes 9.79kB 0.01%
assets/dataTable.store-*.js 51 bytes 8.96kB 0.57%
assets/WorkflowExecutionsInfoAccordion-*.js 1 bytes 8.15kB 0.01%
assets/banners.store-*.js 1 bytes 7.29kB 0.01%
assets/TemplatesWorkflowView-*.js 1 bytes 7.09kB 0.01%
assets/AddDataTableModal-*.css 520 bytes 6.94kB 8.1% ⚠️
assets/DataTableActions-*.js 3.23kB 6.77kB 91.35% ⚠️
assets/MainSidebarHeader-*.css -16 bytes 6.72kB -0.24%
assets/ToolSettingsModal-*.js (New) 6.22kB 6.22kB 100.0% 🚀
assets/AgentEditorModal-*.css 2.69kB 5.98kB 82.06% ⚠️
assets/ToolSettingsModal-*.css (New) 5.81kB 5.81kB 100.0% 🚀
assets/externalSecrets.ee.store-*.js 70 bytes 5.59kB 1.27%
assets/AuthView-*.js 1 bytes 4.5kB 0.02%
assets/CanvasRunWorkflowButton-*.css 31 bytes 3.56kB 0.88%
assets/ResourceFiltersDropdown-*.css 14 bytes 3.4kB 0.41%
assets/ToolSettingsContent-*.css (New) 2.94kB 2.94kB 100.0% 🚀
assets/DataTableActions-*.css (New) 2.69kB 2.69kB 100.0% 🚀
assets/SettingsSecretsProviders-*.css 139 bytes 2.2kB 6.76% ⚠️
assets/SecuritySettings-*.css 14 bytes 1.05kB 1.35%
assets/setupPanel.store-*.js 455 bytes 997 bytes 83.95% ⚠️
assets/ToolsSelectorModal-*.js (Deleted) -15.02kB 0 bytes -100.0% 🗑️
assets/ToolsSelectorModal-*.css (Deleted) -3.69kB 0 bytes -100.0% 🗑️

Files in assets/index-*.js:

  • ./src/features/credentials/components/CredentialEdit/CredentialEdit.vue → Total Size: 366 bytes

Files in assets/users.store-*.js:

  • ./src/features/credentials/credentials.store.ts → Total Size: 12.12kB

Files in assets/NodeView-*.js:

  • ./src/features/setupPanel/setupPanel.utils.ts → Total Size: 2.71kB

  • ./src/features/setupPanel/components/SetupPanelCards.vue → Total Size: 352 bytes

  • ./src/features/setupPanel/components/NodeSetupCard.vue → Total Size: 344 bytes

  • ./src/features/setupPanel/composables/useWorkflowSetupState.ts → Total Size: 8.29kB

Files in assets/CredentialPicker-*.js:

  • ./src/features/credentials/components/CredentialPicker/CredentialPicker.vue → Total Size: 370 bytes

@n8n-assistant n8n-assistant bot added the n8n team Authored by the n8n team label Feb 12, 2026
Copy link
Contributor

@MiloradFilipovic MiloradFilipovic left a comment

Choose a reason for hiding this comment

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

I feel like this adds some unnecessary redundancy to get the job done:

  • When a credential is set up in the CredentialEdit modal, it is being tested twice, both in the modal and in the composable in the background
  • We seem to be tracking tested credentials state both in the setupPanel.store and useWorkflowSetupPanel

I would suggest a simpler approach:

  • Instead of using setupPanel.store as a bridge between the modal and the setup panel, use the credentials.store to keep track of tested credentials and their test results
  • This way we remove credentialsPendingTest completely and all of the new code to that store can be deleted
  • When a credential is tested from UI, we update it's test status in the credentials.store
  • useWorkflowSetupState composable listens to this store and marks cards as completed/uncompleted as credential status changes - doesn't re-test anything
  • Keep the initial credentials check in the composable so we check them when the components load

We can also think about adding some loading state for the initial check, I think it's a bit unexpected for card statuses to change by themsleves

Copy link
Contributor

@MiloradFilipovic MiloradFilipovic left a comment

Choose a reason for hiding this comment

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

Code looks good, thanks for addressing the feedback 🙌
I still have an issue with oAuth credentials. Here, the setup was successful but nothing is checked in the setup panel:

Screen.Recording.2026-02-16.at.13.46.13.mov

@blacksmith-sh

This comment has been minimized.

Copy link
Contributor

@MiloradFilipovic MiloradFilipovic left a comment

Choose a reason for hiding this comment

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

Looks good 👌
Left a minor comment to prevent memory leaks.

* When a credential is deleted, unset it from ALL nodes that reference it.
* This is the symmetric counterpart to setCredential's auto-assignment.
*/
listenForCredentialChanges({
Copy link
Contributor

Choose a reason for hiding this comment

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

I think we should also unsubscribe from store once the composable is diposed:

import { computed, onScopeDispose, watch, type Ref } from 'vue';

const stopListeningForCredentialChanges = listenForCredentialChanges({ ... });

onScopeDispose(stopListeningForCredentialChanges);

@RicardoE105 RicardoE105 added this pull request to the merge queue Feb 18, 2026
Merged via the queue into master with commit ea143c7 Feb 18, 2026
43 checks passed
@RicardoE105 RicardoE105 deleted the ado-4817-only-mark-step-as-completed-if-credentials-work branch February 18, 2026 09:35
@n8n-assistant n8n-assistant bot mentioned this pull request Feb 23, 2026
@n8n-assistant
Copy link
Contributor

n8n-assistant bot commented Feb 23, 2026

Got released with n8n@2.10.0

@n8n-assistant
Copy link
Contributor

n8n-assistant bot commented Feb 23, 2026

Got released with n8n@2.10.0

Tuukkaa pushed a commit that referenced this pull request Mar 2, 2026
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.

2 participants