Skip to content

🚀 Release 2.38.0 - #37475

Merged
Matsuuu merged 1 commit into
release/2.38.0from
release-pr/2.38.0
Sep 1, 2026
Merged

🚀 Release 2.38.0#37475
Matsuuu merged 1 commit into
release/2.38.0from
release-pr/2.38.0

Conversation

@n8n-assistant

@n8n-assistant n8n-assistant Bot commented Sep 1, 2026

Copy link
Copy Markdown
Contributor

2.38.0 (2026-09-01)

Bug Fixes

  • Add parameter binding for mongodb sort and projection (#37335) (292f442)
  • ai-builder: Add case for agent artifacts in AIA preview tab bar (#37141) (ede265d)
  • ai-builder: Add several tools of the same provider via UI (#37212) (fd3a51c)
  • ai-builder: Emit tool call events for Workflow, HTTP Request and Code tools (#37044) (7e81610)
  • ai-builder: Fix session timeline/trace not showing on preview dock when full screen (#36930) (80ff0f3)
  • ai-builder: Preserve managed n8n credits when building workflows (#37198) (0fbc526)
  • Alibaba Cloud Node: Use async image-generation for Wan 2.6 (#37060) (69991a5)
  • API: Adapt binary data endpoint (#36974) (c339069)
  • API: Improve config handling on instance-settings endpoints (#36680) (a53a75d)
  • API: Resolve discover scopes from the request token grant (#37225) (8342a46)
  • API: Skip projectRelations eager-load in GET /credentials (#37138) (b3a77b0)
  • Chat Trigger Node: Apply authentication to test webhook requests (#37296) (122ee6d)
  • Chat Trigger Node: Respect private chat setting in tests (#37406) (0e1901f)
  • Copy glibc into distroless runners image as a matched pair (#37149) (b54c9b6)
  • core: Add a timeout to the S3 startup connection check (#37245) (2586e21)
  • core: Allow a domain-restricted credential to work in its own node (#37200) (720f397)
  • core: Apply proxy environment variables consistently across packages and processes (#37124) (4b9dc5a)
  • core: Bind OAuth token grants to their approved resource (#37122) (380788f)
  • core: Detect invalid Slack Block Kit payloads in AI Assistant builds (#37217) (b9342a5)
  • core: Fix evaluation runs failing when the Evaluation Trigger feeds the entry node (#36975) (72283bd)
  • core: Fix scripts/generate-types export path (#32071) (106166a)
  • core: Gate browser credential creation on its own permission (#36931) (532911c)
  • core: Grant connect access for globally shared end-user credentials (#36992) (aaf0a7e)
  • core: Keep abandoned tool-call suspensions visible in AI Assistant thread history (#36737) (052c30e)
  • core: Keep AI Assistant workflow builds honest about their project (#37177) (7fe438e)
  • core: Keep an existing community package directory when a fresh install fails (#36964) (ad15ba4)
  • core: Keep the API version in the Gemini base URL for agent models (#37239) (c2f636b)
  • core: Only record sub-node error metadata for nodes that get a run (#37256) (8fcabd6)
  • core: Preserve binary content in agent tool results (#37206) (b54500d)
  • core: Prevent OpenTelemetry disable from failing when OTLP collector is unreachable (#37203) (5dd2454)
  • core: Prevent Supabase vector store node auth client timer leaks (#37054) (ad24a48)
  • core: Re-check user tool access on agent runtime cache hits (#37401) (6e9c3e2)
  • core: Report and reconcile agent channel startup failures (#36578) (6b0de0d)
  • core: Report what credential setup actually selected (#37019) (ef13ad0)
  • core: Respond with an error when a webhook execution ends before the Respond to Webhook node runs (#37006) (f9814b7)
  • core: Restore mutating array methods on $json data in expressions (#37172) (dcb5736)
  • core: Return a single not-found message when disconnecting a credential (#37292) (bde05e0)
  • core: Reuse native Agent channel capabilities (#36849) (e4edf89)
  • core: Route OAuth2 token requests through environment proxies in every process (#36996) (5266ce3)
  • core: Route secrets pasted in AI chat to real credential forms (#37277) (6cc8c59)
  • core: Scope active workflow IDs to the requesting user's projects (#37326) (b557e90)
  • core: Share one time budget across nested expression evaluations (#37330) (99c9e79)
  • core: Split Instance Settings permissions into granular custom-role options (#36802) (1f390cd)
  • core: Stage libatomic into the distroless runners image (#37106) (ca600ad)
  • core: Stop the workflow builder writing Python Code nodes that cannot run (#37083) (16a1a78)
  • core: Stop webhook routing locally before best-effort external teardown (#37241) (cae0c8b)
  • core: Support writes on VM expression lazy proxies via evaluation-scoped copy-on-write (#37262) (f77e270)
  • core: Surface AI node failure with useful message and original cause (#37113) (6826730)
  • core: Surface the original error instead of replaying single-use bodies on OAuth2 401 retry (#37000) (86c2a2b)
  • core: Thread execution id through dynamic-credential storage (#37233) (42a782d)
  • core: Unload a community package when a fresh install fails after loading it (#37034) (78130a1)
  • core: Validate the expression engine timeout and memory limit settings (#37333) (90a84ab)
  • core: Verify a resolved agent model against the credential's live list (#37240) (19582fb)
  • editor: Close add-channel modal on outside click (#37171) (c7f3ceb)
  • editor: Correct community node docs link interpolation key (#37236) (7e6cfed)
  • editor: Distinguish session timeline errors (#36816) (b8bc67a)
  • editor: Gate autosave on document hydration (#36966) (c0bc17d)
  • editor: Improve screen reader support for scope selector tool pills (#37159) (e644562)
  • editor: Keep workflows moved out of a folder visible in the source control push modal (#37128) (49e28b5)
  • editor: Render the credit banner as its own card above detached chat inputs (#37082) (2ac3655)
  • editor: Set max resize height for decision input (#37061) (2d227dd)
  • editor: Show an activity indicator while the AI Assistant is still working (#37046) (5b4c65b)
  • editor: Show error when eligible reviewers fail to load (#37089) (45a104a)
  • editor: Start AI Assistant conversations in the current project (#37051) (e5f2efc)
  • editor: Stop a new node from showing a deleted node's execution data (#36915) (8bf95ac)
  • editor: Stop autosave retries on permanent errors (#36967) (588317e)
  • editor: Stop the instance AI model dropdown opening when the wizard opens (#37215) (293e63e)
  • editor: Update AI credential and model selection (#36738) (0871ad7)
  • Evaluation Trigger Node: Respect the row limit when reading from a data table (#36948) (ced302a)
  • Flag resolutions field in community node package.json vetting (#36768) (d85c0b2)
  • Form Node: Improve error messages for invalid form definition JSON (#37291) (d8ce73c)
  • Gmail Trigger Node: Do not lose queued messages when a fetch fails mid-poll (#37263) (fe61e57)
  • Gmail Trigger Node: Do not miss emails when more than 100 arrive between polls (#37261) (addc7f9)
  • HTTP Request Node: Keep SSL passphrases with whitespace intact (#37020) (bcd240f)
  • HTTP Request Node: Show the API response when a file upload fails (#36924) (8430516)
  • Preserve AWS request parameter values (#37303) (267d98b)
  • Quote and validate Postgres table and column identifiers in AI nodes (#31370) (1fd2918)
  • Require a configured model before the AI Assistant accepts a prompt (#37226) (38e33a4)
  • Restore legacy PEM headers when reformatting single-line keys (#37088) (044a90d)
  • Stop replacing error messages with "Unknown error" (#36820) (5df7a17)
  • Use sentence case for settings menu labels (#36651) (7bfdc99)

Features

  • ai-builder: Add an n8n credits section to the agent tools modal (#36183) (54ac6cc)
  • ai-builder: Consolidate node credential resolution in agent builder to use same service as AIA (#36903) (f41f864)
  • Confluence Node: Add page add and remove label operations (#37002) (ea24aa9)
  • Confluence Node: Add Page Get Comments operation (#37073) (843a4a8)
  • Confluence Node: Add Page Get Many by Label operation (#36785) (9fbd9fb)
  • Confluence Node: Add Space resource with Get and Get Many operations (#36898) (58d9d39)
  • Confluence Node: Page — get labels (#36900) (9b910a1)
  • core: Add chat-specific branding to the shared OAuth consent screen (#37430) (e774ed2)
  • core: Add Moonshot, MiniMax and Qwen Cloud as model providers in Agent Builder (#36751) (ebbdc1a)
  • core: Chat trigger publish validation & workflow:execute access control (#37231) (1f062f9)
  • core: Establish chat session identity for credential resolution (#37041) (c96f329)
  • core: Let workflow verification target a specific trigger (#37091) (6420048)
  • core: Limit Git connections to one instance connection (#37302) (1e4edb2)
  • core: Resolve sub-agents and workflow tools by run type (#37117) (fa43bc8)
  • core: Serve a nonce-based Content-Security-Policy on n8n's HTML pages (#36749) (54b2b94)
  • core: Skip live tests when n8n credits are depleted (#36641) (a328674)
  • core: Split the hosted chat page into a trusted shell and a sandboxed frame (#36947) (662a401)
  • core: Support workflows with Wait nodes as agent tools (#36692) (23a5f46)
  • Databricks Node: Add user-delegated OAuth2 credential (authorization code + PKCE) (#37007) (e60c431)
  • editor: Add adaptive layout to ChatInput (#36939) (435ed5f)
  • editor: Rename n8n credits and n8n Connect copy to Gateway credits in the UI (#37267) (6718392)
  • editor: Update the order of providers in the agent builder model picker (#37143) (da6da00)
  • Gotify Node: Add Gotify extra notification settings (#23915) (0aa9aa8)
  • MongoDB Node: Batch update and find-and-update writes with bulkWrite (#37035) (5b9b332)
  • Offer to send an anonymous failure report in the install script (#37016) (269de76)
  • Trigger observational memory mid-run on a token budget (#37234) (39f49b9)

Performance Improvements

  • core: Acquire agent workspace sandboxes lazily, make them persistent, and share them with delegated sub-agents (#37242) (a1b1f2e)
  • core: Chunk package ID lookups (#36923) (98e5104)
  • core: Read the poller state row once per durable poll tick (#36973) (be01422)
  • core: Reduce workflow import queries (#36949) (bcf693e)
  • editor: Reduce AI gateway wallet requests by caching the credits balance (#36725) (d62dc26)

Review in cubic

@n8n-release-helper
n8n-release-helper Bot enabled auto-merge (squash) September 1, 2026 06:07
@chromatic-com

chromatic-com Bot commented Sep 1, 2026

Copy link
Copy Markdown

Important

Testing in progress…

🟢 UI Tests: n8n: 515 tests unchanged
UI Review: n8n: Comparing 515 stories…
Storybook icon Storybook Publish: n8n: 515 stories published

@codecov

codecov Bot commented Sep 1, 2026

Copy link
Copy Markdown

Bundle Report

Bundle size has no change ✅

@codecov

codecov Bot commented Sep 1, 2026

Copy link
Copy Markdown

❌ 2 Tests Failed:

Tests completed Failed Passed Skipped
91764 2 91762 29
View the top 2 failed test(s) by shortest run time
src/user-management/email/__tests__/user-management-mailer.test.ts > UserManagementMailer > when SMTP is configured > should send mcp client revoked notifications
Stack Traces | 0.00288s run time
AssertionError: expected '<mjml>\n\t<mj-include path="./_common…' to match /\d{1,2} [A-Z][a-z]{2} \d{4}/

- Expected:
/\d{1,2} [A-Z][a-z]{2} \d{4}/

+ Received:
"<mjml>
	<mj-include path=\"./_common.mjml\" />
	<mj-body>
		<mj-section padding=\"0 20px\">
			<mj-column>
				<mj-include path=\"./_logo.mjml\" />
				<mj-text font-size=\"22px\" font-weight=\"400\">Your MCP client access was revoked</mj-text>
				<mj-text>
					Your connected MCP client <b>\"Claude Code\"</b> on <b>n8n.url</b> was revoked by <b>Jan Ostrówka</b> on 1 Sept 2026.
				</mj-text>
				<mj-text>
					The client has lost access to this instance and any sessions using it have stopped working. If you still need access, you can reconnect the client.
				</mj-text>
				<mj-button href=\"https://n8n.url/settings/mcp\">Manage MCP access</mj-button>
				<mj-include path=\"./_footer.mjml\" />
			</mj-column>
		</mj-section>
	</mj-body>
</mjml>
"

 ❯ .../email/__tests__/user-management-mailer.test.ts:244:21
src/user-management/email/__tests__/user-management-mailer.test.ts > UserManagementMailer > when SMTP is configured > should send api key revoked notifications
Stack Traces | 0.00414s run time
AssertionError: expected '<mjml>\n\t<mj-include path="./_common…' to match /\d{1,2} [A-Z][a-z]{2} \d{4}/

- Expected:
/\d{1,2} [A-Z][a-z]{2} \d{4}/

+ Received:
"<mjml>
	<mj-include path=\"./_common.mjml\" />
	<mj-body>
		<mj-section padding=\"0 20px\">
			<mj-column>
				<mj-include path=\"./_logo.mjml\" />
				<mj-text font-size=\"22px\" font-weight=\"400\">Your API key was revoked</mj-text>
				<mj-text>
					Your API key <b>\"Test 123\"</b> (••••aaa5) on <b>n8n.url</b> was revoked by <b>Jan Ostrówka</b> on 1 Sept 2026.
				</mj-text>
				<mj-text>
					Any integrations or scripts still using this key have stopped working. If you still need API access, you can create a new key.
				</mj-text>
				<mj-button href=\"https://n8n.url/settings/api\">Create new API key</mj-button>
				<mj-include path=\"./_footer.mjml\" />
			</mj-column>
		</mj-section>
	</mj-body>
</mjml>
"

 ❯ .../email/__tests__/user-management-mailer.test.ts:194:21

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@Matsuuu
Matsuuu disabled auto-merge September 1, 2026 06:56
@Matsuuu
Matsuuu merged commit 53e208d into release/2.38.0 Sep 1, 2026
128 of 136 checks passed
@Matsuuu
Matsuuu deleted the release-pr/2.38.0 branch September 1, 2026 06:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant