diff --git a/CHANGELOG.md b/CHANGELOG.md index 1549657e9f6..fcd7989ab1b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,117 @@ +# [2.23.0](https://github.com/n8n-io/n8n/compare/n8n@2.22.0...n8n@2.23.0) (2026-05-27) + + +### Bug Fixes + +* **ai-builder:** Default Switch to case-insensitive in builder hints ([#31044](https://github.com/n8n-io/n8n/issues/31044)) ([76c432c](https://github.com/n8n-io/n8n/commit/76c432c53f5c3387bbc406198296364822c8eded)) +* **Azure Cosmos DB Node:** Preserve query parameter types instead of converting to strings ([#25882](https://github.com/n8n-io/n8n/issues/25882)) ([cb4db22](https://github.com/n8n-io/n8n/commit/cb4db22b00ef50f41f88d95fff3c387ed8886cc6)) +* **Bitbucket Node:** Use supported workspace listing endpoint ([#30646](https://github.com/n8n-io/n8n/issues/30646)) ([875a805](https://github.com/n8n-io/n8n/commit/875a8054f6d087f91b1cde8e20a122469eca18e5)) +* Bump urllib3 constraint to >=2.7.0 ([#30927](https://github.com/n8n-io/n8n/issues/30927)) ([aa78b81](https://github.com/n8n-io/n8n/commit/aa78b817ee32c53602da02637d152e6efae8c943)) +* **core:** Acquire expression isolate for scheduled polls ([#30729](https://github.com/n8n-io/n8n/issues/30729)) ([764f33a](https://github.com/n8n-io/n8n/commit/764f33ac1a7b7699feca827bafbabc3debef683b)) +* **core:** Allow dynamic credential OAuth callbacks without skip-auth env var ([#31103](https://github.com/n8n-io/n8n/issues/31103)) ([cf1a6fa](https://github.com/n8n-io/n8n/commit/cf1a6fa18cc96ea2b1be8307edce8f00b28b6163)) +* **core:** Allow personal project owners to manage data redaction ([#31153](https://github.com/n8n-io/n8n/issues/31153)) ([1f41d33](https://github.com/n8n-io/n8n/commit/1f41d33852ced4b4ca979ef0ddd8d8b371c9db47)) +* **core:** Allow shadowing dangerous globals as variable names in workflow SDK ([#30678](https://github.com/n8n-io/n8n/issues/30678)) ([d13e22b](https://github.com/n8n-io/n8n/commit/d13e22b3645ac7478a2e974f5f40b8c1ca58aeac)) +* **core:** Allow Unicode characters in execution metadata keys ([#30486](https://github.com/n8n-io/n8n/issues/30486)) ([41a273e](https://github.com/n8n-io/n8n/commit/41a273e1e4bc44534e490f447b26b0eb187ebec0)) +* **core:** Bypass pubsub debounce for workflow activation display commands ([#30965](https://github.com/n8n-io/n8n/issues/30965)) ([9f0a695](https://github.com/n8n-io/n8n/commit/9f0a69598a469094bbef675628fd28abeacb7ae6)) +* **core:** Count agent background generation tokens ([#31082](https://github.com/n8n-io/n8n/issues/31082)) ([def3a7b](https://github.com/n8n-io/n8n/commit/def3a7bb074c6bfe8bfe333a6f7c369d377a4071)) +* **core:** Exclude error workflow executions from time saved insights ([#30952](https://github.com/n8n-io/n8n/issues/30952)) ([4b0e23b](https://github.com/n8n-io/n8n/commit/4b0e23b5de494f9271a06ef519f5984150ad579e)) +* **core:** Guide agent to not pass bogus workflow-id to submit-workflow tool ([#30911](https://github.com/n8n-io/n8n/issues/30911)) ([a3210d5](https://github.com/n8n-io/n8n/commit/a3210d5ede8d16e7f0dc329fe107d030050c7995)) +* **core:** Handle null pinData column at executions, save empty object as pinData on instanceAI ([#30698](https://github.com/n8n-io/n8n/issues/30698)) ([50dc050](https://github.com/n8n-io/n8n/commit/50dc050dc1a0c531f10739e5ca5bf0a6e1e8c6c7)) +* **core:** Honor chunkSize when streaming S3-backed binary data ([#30919](https://github.com/n8n-io/n8n/issues/30919)) ([e2c2a5a](https://github.com/n8n-io/n8n/commit/e2c2a5a62cf69590b04fe5bb202cf3d235517f00)) +* **core:** Improve license diagnostics and CLI output ([#30955](https://github.com/n8n-io/n8n/issues/30955)) ([affc3c1](https://github.com/n8n-io/n8n/commit/affc3c180686ffa412ed18492fc4288c64610de7)) +* **core:** Improve project routing for MCP-built workflows ([#30674](https://github.com/n8n-io/n8n/issues/30674)) ([65b7919](https://github.com/n8n-io/n8n/commit/65b7919a8a5b205f78ff1d7945611eaf0176ff2e)) +* **core:** Keep Instance AI HITL confirmations waiting ([#30722](https://github.com/n8n-io/n8n/issues/30722)) ([cdfc905](https://github.com/n8n-io/n8n/commit/cdfc9053f6af2a76d0591421f8535be4114db45f)) +* **core:** Keep workflow active when external hook rejects publish ([#30707](https://github.com/n8n-io/n8n/issues/30707)) ([2bc621e](https://github.com/n8n-io/n8n/commit/2bc621e943a1550754ccc001b96fbd4e92165aba)) +* **core:** Members can still create API keys with insights:read scope ([#30778](https://github.com/n8n-io/n8n/issues/30778)) ([d5d619c](https://github.com/n8n-io/n8n/commit/d5d619c452d59eee660134a7b711eed840cc9339)) +* **core:** Populate manual user id on webhook execution data path ([#30644](https://github.com/n8n-io/n8n/issues/30644)) ([2743f51](https://github.com/n8n-io/n8n/commit/2743f51f320776d937462ca10d13e9694ab8b10a)) +* **core:** Preserve known credential supportedNodes under lazy loading ([#30529](https://github.com/n8n-io/n8n/issues/30529)) ([58483a1](https://github.com/n8n-io/n8n/commit/58483a11bf179c51b52da96b126593550af8411f)) +* **core:** Preserve workflow node settings in workflow-sdk ([#30869](https://github.com/n8n-io/n8n/issues/30869)) ([69c9e65](https://github.com/n8n-io/n8n/commit/69c9e65e38e923b62508319197e1b0065a73ce73)) +* **core:** Reject invalid ai_tool source nodes in MCP workflow creation ([#30593](https://github.com/n8n-io/n8n/issues/30593)) ([af73013](https://github.com/n8n-io/n8n/commit/af73013cd01518142e2d392693122168f226923c)) +* **core:** Remove aggressive temp directory cleanup in binary data rename ([#31068](https://github.com/n8n-io/n8n/issues/31068)) ([10a04cb](https://github.com/n8n-io/n8n/commit/10a04cb209bc7860d6db561ecfe7d236dfb308b2)) +* **core:** Report scheduled-poll isolate acquisition failures via __emitError ([#30743](https://github.com/n8n-io/n8n/issues/30743)) ([5f97ef3](https://github.com/n8n-io/n8n/commit/5f97ef3eb8040e6b5c34f9e2114e41d2fd3a7f6f)) +* **core:** Scope source control data tables by project ([#30751](https://github.com/n8n-io/n8n/issues/30751)) ([4cf44e3](https://github.com/n8n-io/n8n/commit/4cf44e3df46c3bccb6a93e4ddd5a1a0e68d9cfad)) +* **core:** Set HITL confirmation timeout default ([#30783](https://github.com/n8n-io/n8n/issues/30783)) ([b601880](https://github.com/n8n-io/n8n/commit/b60188001adef1b73192e62f733abcb7594250c4)) +* **core:** Show clear error when running a tool node without an Agent ([#30626](https://github.com/n8n-io/n8n/issues/30626)) ([ca38167](https://github.com/n8n-io/n8n/commit/ca381670da252d566c8c4a065f3faec9f8d817a7)) +* **core:** Stop classifying AI sub-tool nodes as triggers in generated types ([#30865](https://github.com/n8n-io/n8n/issues/30865)) ([4db0046](https://github.com/n8n-io/n8n/commit/4db00463e1c0ab9151a04efa0172a45778506ef0)) +* **core:** Stop idle-killing Instance AI active runs awaiting HITL ([#31154](https://github.com/n8n-io/n8n/issues/31154)) ([a8d29f2](https://github.com/n8n-io/n8n/commit/a8d29f22725f9e29b4457956190eb87f8595a357)) +* **core:** Submit builder workflow file when submit is missed ([#30711](https://github.com/n8n-io/n8n/issues/30711)) ([b272ab4](https://github.com/n8n-io/n8n/commit/b272ab4fe8f6afafe726756187159e081fd3f179)) +* **core:** Surface SSO claims and role mapping diagnostics ([#30753](https://github.com/n8n-io/n8n/issues/30753)) ([449abdd](https://github.com/n8n-io/n8n/commit/449abdd1803a2ac2ba70ddd3546fe94a46a24240)) +* **core:** Use active workflow version for webhook CORS preflight ([#31144](https://github.com/n8n-io/n8n/issues/31144)) ([979a53b](https://github.com/n8n-io/n8n/commit/979a53baa43b0b7b2031c21763eee44d09e831ab)) +* **core:** Use pdf-parse v2 in Document Loader to fix PDF embedding ([#30961](https://github.com/n8n-io/n8n/issues/30961)) ([b5c53ff](https://github.com/n8n-io/n8n/commit/b5c53ff3ea42dae1756741a7e9e183e7ceecb107)) +* **core:** Validate non-empty prompts in AI vendor nodes before API calls ([#30795](https://github.com/n8n-io/n8n/issues/30795)) ([d8ef975](https://github.com/n8n-io/n8n/commit/d8ef975101c46cafb47ad638b50388b31a16ae31)) +* **core:** Warn when SDK node config has unknown top-level keys ([#30677](https://github.com/n8n-io/n8n/issues/30677)) ([1864916](https://github.com/n8n-io/n8n/commit/1864916665df28551b2085b240a0382a27e360da)) +* **core:** Write full SSO provisioning config from env-managed loader ([#30885](https://github.com/n8n-io/n8n/issues/30885)) ([3103d38](https://github.com/n8n-io/n8n/commit/3103d3879832e555ec8b0444e7408bf176efe6ce)) +* **editor:** Continue manually triggered evaluation runs ([#30814](https://github.com/n8n-io/n8n/issues/30814)) ([3115e9b](https://github.com/n8n-io/n8n/commit/3115e9baafe371c33f39a6d33da4cb34486cca3c)) +* **editor:** Defer production checklist until publish modal closes ([#31114](https://github.com/n8n-io/n8n/issues/31114)) ([94a1465](https://github.com/n8n-io/n8n/commit/94a14650de84b465978133cd81b1d06036c1e5d0)) +* **editor:** Destroy CodeMirror editors and harden rAF polyfill ([#31080](https://github.com/n8n-io/n8n/issues/31080)) ([6145d51](https://github.com/n8n-io/n8n/commit/6145d51a7c7b19fc8027c6f5b0ce78913082e4aa)) +* **editor:** Hide custom scopes for managed OAuth credentials ([#30306](https://github.com/n8n-io/n8n/issues/30306)) ([5af7249](https://github.com/n8n-io/n8n/commit/5af7249979ae1be8688df5fafcd424c9cbce4d49)) +* **editor:** Place caret inside expression brackets on auto-switch ([#30030](https://github.com/n8n-io/n8n/issues/30030)) ([df5a1c4](https://github.com/n8n-io/n8n/commit/df5a1c4452b4e2cacd14bedfc6ddd9b38a3fca03)) +* **editor:** Prevent evaluations tab crash on unsaved workflows ([#30744](https://github.com/n8n-io/n8n/issues/30744)) ([3ee618b](https://github.com/n8n-io/n8n/commit/3ee618b35b894cae8984d877a2e26819261d4824)) +* **editor:** Prevent expression result popover from covering CodeMirror tooltips ([#30981](https://github.com/n8n-io/n8n/issues/30981)) ([cadba03](https://github.com/n8n-io/n8n/commit/cadba0397410dcf6625779f6b80188e16f694fc0)) +* **editor:** Prevent Insights chart axis from overlapping table heading ([#30840](https://github.com/n8n-io/n8n/issues/30840)) ([020c660](https://github.com/n8n-io/n8n/commit/020c66003a9e37d709d44adf90a1693232baa45b)) +* **editor:** Remove 'Continue Chat' for close button in Agents ([#30464](https://github.com/n8n-io/n8n/issues/30464)) ([09665b6](https://github.com/n8n-io/n8n/commit/09665b61a0cb2516a7ed1f8e2589b12a9ac6e2d9)) +* **editor:** Remove 'no more sessions' from sessions list in Agents ([#30461](https://github.com/n8n-io/n8n/issues/30461)) ([e14c214](https://github.com/n8n-io/n8n/commit/e14c2144a03a38db12c593d743b13fe43906c3db)) +* **editor:** Use i18n heading for insights chart granularity title ([#30837](https://github.com/n8n-io/n8n/issues/30837)) ([e98809f](https://github.com/n8n-io/n8n/commit/e98809f9bd3498ec7671d114d21853ef3b8124f9)) +* **Facebook Graph API Node:** Clarify endpoints that accept binary uploads ([#30903](https://github.com/n8n-io/n8n/issues/30903)) ([54c8eab](https://github.com/n8n-io/n8n/commit/54c8eab2e4784025cd49aedb91f038e243deeb64)) +* Fix security issue in urllib3 via minor version upgrade from 2.6.3 to 2.7.0 in packages ([#31075](https://github.com/n8n-io/n8n/issues/31075)) ([6eb6628](https://github.com/n8n-io/n8n/commit/6eb6628ea1aa61ccd6884df5dc786e8764096f89)) +* Fixes PostHog group identify call site after init ([#30794](https://github.com/n8n-io/n8n/issues/30794)) ([ba35fc8](https://github.com/n8n-io/n8n/commit/ba35fc81c38e4bbcb5ab9ece6eb7691137340c34)) +* **Git Node:** Clone repositories into target path ([#30822](https://github.com/n8n-io/n8n/issues/30822)) ([bd3aafc](https://github.com/n8n-io/n8n/commit/bd3aafce75ddb2e6f8fc196aea5fd76a0d774363)) +* **Google Sheets Node:** Allow column reorder and insertion without erroring ([#30621](https://github.com/n8n-io/n8n/issues/30621)) ([85f5221](https://github.com/n8n-io/n8n/commit/85f5221312bdce938b7d905f47114debbc18f2b9)) +* **Google Sheets Node:** Handle undefined lookup values in lookupValues ([#31055](https://github.com/n8n-io/n8n/issues/31055)) ([7348f92](https://github.com/n8n-io/n8n/commit/7348f928c8783ea7961cd697f99a1ae54af607ef)) +* **HTTP Request Node:** Fix parallel binary filename mixing ([#30568](https://github.com/n8n-io/n8n/issues/30568)) ([b062c08](https://github.com/n8n-io/n8n/commit/b062c08471747741f55c8bec0ba959f85f9685d5)) +* **MCP Client Node:** Surface errors as node failures in new node versions ([#29681](https://github.com/n8n-io/n8n/issues/29681)) ([c57c1f0](https://github.com/n8n-io/n8n/commit/c57c1f04a4135a522260895716825a1be33a137f)) +* **Pipedrive Node:** Format date-only fields as YYYY-MM-DD ([#30891](https://github.com/n8n-io/n8n/issues/30891)) ([ca74a83](https://github.com/n8n-io/n8n/commit/ca74a8367db455429edf16d4a9c579056a6de52c)) +* **Salesforce Node:** Quote numeric string filter values in SOQL conditions ([#31128](https://github.com/n8n-io/n8n/issues/31128)) ([8dbcc83](https://github.com/n8n-io/n8n/commit/8dbcc8359aed981fc9778ccc69a1e159cb560bde)) +* Vendor uudecoder and drop uuencode dependency ([#30817](https://github.com/n8n-io/n8n/issues/30817)) ([c1a4dbf](https://github.com/n8n-io/n8n/commit/c1a4dbf09493c553587d202e9ebee371fdd4d7e5)) +* **Weaviate Vectore Store Node:** Replace undefined defaults in Weaviate Vector Store options ([#26603](https://github.com/n8n-io/n8n/issues/26603)) ([12db685](https://github.com/n8n-io/n8n/commit/12db6859fdc4c1f63035581db919518586194334)) + + +### Features + +* **API:** Add per-user connection status to credential responses ([#30916](https://github.com/n8n-io/n8n/issues/30916)) ([9b451b1](https://github.com/n8n-io/n8n/commit/9b451b14769c43f0ede99089f84ae85a155295ac)) +* **core:** Add AI Assistant pending-confirmation schema ([#31074](https://github.com/n8n-io/n8n/issues/31074)) ([319c9c2](https://github.com/n8n-io/n8n/commit/319c9c24db1fc6941fb32cabb4f91b120b590d9c)) +* **core:** Add AI insights endpoint for eval collections (TRUST-80) ([#30301](https://github.com/n8n-io/n8n/issues/30301)) ([6137d25](https://github.com/n8n-io/n8n/commit/6137d2550949bb8366076dc233c5aabb9719f45a)) +* **core:** Add chat trigger builder hints ([#30730](https://github.com/n8n-io/n8n/issues/30730)) ([2cdc5f5](https://github.com/n8n-io/n8n/commit/2cdc5f51da01bf6aea79535cffb8de169016ce5a)) +* **core:** Add enum check helper to migration DSL ([#30900](https://github.com/n8n-io/n8n/issues/30900)) ([1b9dfb2](https://github.com/n8n-io/n8n/commit/1b9dfb20c4a345510ec86a4ed888a8287aa16064)) +* **core:** Add episodic memory SDK defaults ([#30757](https://github.com/n8n-io/n8n/issues/30757)) ([cd9b013](https://github.com/n8n-io/n8n/commit/cd9b013ed41fc54e3234c6fb3314c774b60bbbad)) +* **core:** Add project.id to workflow.execute OTEL span ([#30803](https://github.com/n8n-io/n8n/issues/30803)) ([b80738b](https://github.com/n8n-io/n8n/commit/b80738bb18d2c5a2d2d6221bf32f14d7a755b712)) +* **core:** Add support for creating and updating workflow groups ([#30211](https://github.com/n8n-io/n8n/issues/30211)) ([b9ba260](https://github.com/n8n-io/n8n/commit/b9ba2603cea3dc783906cd19c4429706d143d983)) +* **core:** Add system resolver id lookup to DynamicCredentialsProxy ([#30790](https://github.com/n8n-io/n8n/issues/30790)) ([d7d8519](https://github.com/n8n-io/n8n/commit/d7d8519515520a841fff4cdca3bf0c284103d100)) +* **core:** Add tool for checking workflow validation errors ([#30868](https://github.com/n8n-io/n8n/issues/30868)) ([52e15bd](https://github.com/n8n-io/n8n/commit/52e15bdcaf3a8b24282a2e25bd4427a060e961c5)) +* **core:** Configure episodic memory in n8n ([#30761](https://github.com/n8n-io/n8n/issues/30761)) ([15ab49f](https://github.com/n8n-io/n8n/commit/15ab49f3d0cd0cdffaff71dd52f72dbc16dd3b77)) +* **core:** Encrypt running user's auth cookie into manual execution credential context ([#30811](https://github.com/n8n-io/n8n/issues/30811)) ([5ad38d7](https://github.com/n8n-io/n8n/commit/5ad38d77b79e12b21a65549eb42e4f70285ad1b8)) +* **core:** Inline JWKS in OAuth2 dynamic client registration ([#29986](https://github.com/n8n-io/n8n/issues/29986)) ([a4ff835](https://github.com/n8n-io/n8n/commit/a4ff8358e1b45cb835e6aaf26d005236079d4b8a)) +* **core:** Make instance AI understand the credential picker better and suggest recommended oauth2 ([#30959](https://github.com/n8n-io/n8n/issues/30959)) ([95d4318](https://github.com/n8n-io/n8n/commit/95d431819eb4882437004d54a0d9284317e2c0e5)) +* **core:** Make sandbox thread-scoped and lazy-initialize it on Instance AI ([#30904](https://github.com/n8n-io/n8n/issues/30904)) ([eba7d05](https://github.com/n8n-io/n8n/commit/eba7d056c5c8045a19ebb100cc607edce23d38e6)) +* **core:** Move builder templates to n8n-sdk-templates with runtime fetch ([#30537](https://github.com/n8n-io/n8n/issues/30537)) ([e2dd10c](https://github.com/n8n-io/n8n/commit/e2dd10c4355d718682c82d6e76204d541fb65fcf)) +* **core:** Package workflow export ([#30641](https://github.com/n8n-io/n8n/issues/30641)) ([ca56b6b](https://github.com/n8n-io/n8n/commit/ca56b6b90ae1db4d30850dfd33003c54fb1057d1)) +* **core:** Persist episodic memory entries ([#30760](https://github.com/n8n-io/n8n/issues/30760)) ([73ccc82](https://github.com/n8n-io/n8n/commit/73ccc82a19216a9b9515a20425d90c361bf242c8)) +* **core:** Route private OAuth2 credentials through dynamic-credential origin ([#30653](https://github.com/n8n-io/n8n/issues/30653)) ([593ed3c](https://github.com/n8n-io/n8n/commit/593ed3c4a6b61362d0a978132e99c9c07e759881)) +* **core:** Split workflow:updateRedactionSetting into enable and disable scopes ([#30446](https://github.com/n8n-io/n8n/issues/30446)) ([41c958b](https://github.com/n8n-io/n8n/commit/41c958bd9de238fddedf14b198e25a1d883f5648)) +* **core:** Support checking for workflow tags existing in preExecute hook ([#30440](https://github.com/n8n-io/n8n/issues/30440)) ([19fef9b](https://github.com/n8n-io/n8n/commit/19fef9be1b0ddf8d37c4fb2e6e6b072eb27dfa6a)) +* **core:** Use runtime skills for agent builder prompt ([#30963](https://github.com/n8n-io/n8n/issues/30963)) ([40ce96a](https://github.com/n8n-io/n8n/commit/40ce96a74e2fccbd25f5cd0a75e3b9ed1ad353ce)) +* **core:** Validate data table references in MCP workflow builder ([#30682](https://github.com/n8n-io/n8n/issues/30682)) ([794e050](https://github.com/n8n-io/n8n/commit/794e0506c98f1e1b442744fe62cfdec8653963de)) +* **editor:** Add data redaction enforcement to Security & Policies ([#30801](https://github.com/n8n-io/n8n/issues/30801)) ([c351623](https://github.com/n8n-io/n8n/commit/c351623d23bcc546ba8ce2b6a4107832a7fd6f42)) +* **editor:** Add new AI chat to universal create dropdown ([#30719](https://github.com/n8n-io/n8n/issues/30719)) ([1d60318](https://github.com/n8n-io/n8n/commit/1d60318c280a88a2808ffece5f64dea49d7fc0ad)) +* **editor:** Lock workflow redaction settings when enforced at instance level ([#30520](https://github.com/n8n-io/n8n/issues/30520)) ([c730def](https://github.com/n8n-io/n8n/commit/c730def8395a68d9a0ee68aa747e8583248c761f)) +* **editor:** Make plan approval UX clearer ([#31054](https://github.com/n8n-io/n8n/issues/31054)) ([46d758a](https://github.com/n8n-io/n8n/commit/46d758ab2b2c6e5d9e7c40f9a3965e6df468e841)) +* **editor:** Open workflow artifact when builder spawns to edit it ([#30862](https://github.com/n8n-io/n8n/issues/30862)) ([cdf9b4f](https://github.com/n8n-io/n8n/commit/cdf9b4ffb088ad86fb223967f4410957fb700bb7)) +* **editor:** Per-user OAuth connection banner for resolvable credentials ([#30994](https://github.com/n8n-io/n8n/issues/30994)) ([9e17454](https://github.com/n8n-io/n8n/commit/9e17454e45326785b9b65607f418cbe5a1b94fe8)) +* **editor:** Require production redaction when enabling manual redaction ([#30913](https://github.com/n8n-io/n8n/issues/30913)) ([7f639e5](https://github.com/n8n-io/n8n/commit/7f639e5bef3439df9c8405e151dd2c2757e21c95)) +* **editor:** Surface MCP access toggle on workflow cards ([#30683](https://github.com/n8n-io/n8n/issues/30683)) ([bf2b205](https://github.com/n8n-io/n8n/commit/bf2b205b6bb6fa1cfab3f7d1d807cf6c47a48b75)) +* **Execute Workflow Node:** Return items from every run of the sub-workflow's last node ([#30716](https://github.com/n8n-io/n8n/issues/30716)) ([91f07ef](https://github.com/n8n-io/n8n/commit/91f07efd00d9b48ce4cc0939ed7b81e188115f64)) +* **Gumroad Trigger Node:** Add OAuth2 authentication ([#29974](https://github.com/n8n-io/n8n/issues/29974)) ([267658e](https://github.com/n8n-io/n8n/commit/267658e076dc74ba3ea5844f54091ab9d809a7c1)) +* **Odoo Node:** Add v2 with resource locators, field mapping, and API key auth ([#30796](https://github.com/n8n-io/n8n/issues/30796)) ([1aa4c37](https://github.com/n8n-io/n8n/commit/1aa4c37fd146db06f68f688753011d109a25808a)) +* **Oracle DB Vector Store Node:** Add support for vectorstore and embedding node support ([#29014](https://github.com/n8n-io/n8n/issues/29014)) ([82dd59f](https://github.com/n8n-io/n8n/commit/82dd59f341258445ee803e3c43345b9248b12c6d)) +* Updates PostHog feature flags evaluation method & filters out unused event ([#30272](https://github.com/n8n-io/n8n/issues/30272)) ([ab7c54d](https://github.com/n8n-io/n8n/commit/ab7c54d4d5d4f4cadcc5bf5534670f02fe7d1180)) + + +### Performance Improvements + +* **ai-builder:** Defer heavy idle-boot dependencies (-27 MiB heap) ([#30834](https://github.com/n8n-io/n8n/issues/30834)) ([bd5cd31](https://github.com/n8n-io/n8n/commit/bd5cd310933c4c3700c90f313189526def41ea96)) +* **core:** Reduce Instance AI memory usage ([#30777](https://github.com/n8n-io/n8n/issues/30777)) ([4b4f663](https://github.com/n8n-io/n8n/commit/4b4f663b0860c44460a735c22ae06ed4a8802592)) + + # [2.22.0](https://github.com/n8n-io/n8n/compare/n8n@2.21.0...n8n@2.22.0) (2026-05-19) diff --git a/package.json b/package.json index 249598f6841..cd008079c26 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "n8n-monorepo", - "version": "2.22.0", + "version": "2.23.0", "private": true, "engines": { "node": ">=22.22", diff --git a/packages/@n8n/agents/package.json b/packages/@n8n/agents/package.json index ba7d0f157e8..cf3fd02bae5 100644 --- a/packages/@n8n/agents/package.json +++ b/packages/@n8n/agents/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/agents", - "version": "0.8.0", + "version": "0.9.0", "description": "AI agent SDK for n8n's code-first execution engine", "main": "dist/index.js", "module": "dist/index.js", diff --git a/packages/@n8n/ai-node-sdk/package.json b/packages/@n8n/ai-node-sdk/package.json index 92331e346ff..39d9ba42617 100644 --- a/packages/@n8n/ai-node-sdk/package.json +++ b/packages/@n8n/ai-node-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/ai-node-sdk", - "version": "0.13.0", + "version": "0.14.0", "description": "SDK for building AI nodes in n8n", "types": "dist/esm/index.d.ts", "module": "dist/esm/index.js", diff --git a/packages/@n8n/ai-utilities/package.json b/packages/@n8n/ai-utilities/package.json index 04d09b46e06..ffe5510d992 100644 --- a/packages/@n8n/ai-utilities/package.json +++ b/packages/@n8n/ai-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/ai-utilities", - "version": "0.16.0", + "version": "0.17.0", "description": "Utilities for building AI nodes in n8n", "types": "dist/esm/index.d.ts", "module": "dist/esm/index.js", diff --git a/packages/@n8n/ai-workflow-builder.ee/package.json b/packages/@n8n/ai-workflow-builder.ee/package.json index 23241d2c04e..56c488a6927 100644 --- a/packages/@n8n/ai-workflow-builder.ee/package.json +++ b/packages/@n8n/ai-workflow-builder.ee/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/ai-workflow-builder", - "version": "1.22.0", + "version": "1.23.0", "scripts": { "clean": "rimraf dist .turbo", "typecheck": "tsc --noEmit", diff --git a/packages/@n8n/api-types/package.json b/packages/@n8n/api-types/package.json index 5e5e82e8f67..6099afe05e2 100644 --- a/packages/@n8n/api-types/package.json +++ b/packages/@n8n/api-types/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/api-types", - "version": "1.22.0", + "version": "1.23.0", "scripts": { "clean": "rimraf dist .turbo", "dev": "pnpm watch", diff --git a/packages/@n8n/backend-common/package.json b/packages/@n8n/backend-common/package.json index a5eff55bbe2..6821a7c0612 100644 --- a/packages/@n8n/backend-common/package.json +++ b/packages/@n8n/backend-common/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/backend-common", - "version": "1.22.0", + "version": "1.23.0", "scripts": { "clean": "rimraf dist .turbo", "dev": "pnpm watch", diff --git a/packages/@n8n/backend-test-utils/package.json b/packages/@n8n/backend-test-utils/package.json index 0c9a38ebcae..c4dc6e32746 100644 --- a/packages/@n8n/backend-test-utils/package.json +++ b/packages/@n8n/backend-test-utils/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/backend-test-utils", - "version": "1.22.0", + "version": "1.23.0", "scripts": { "clean": "rimraf dist .turbo", "dev": "pnpm watch", diff --git a/packages/@n8n/benchmark/package.json b/packages/@n8n/benchmark/package.json index 3067709b0d3..bf38ca3283b 100644 --- a/packages/@n8n/benchmark/package.json +++ b/packages/@n8n/benchmark/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/n8n-benchmark", - "version": "2.9.0", + "version": "2.10.0", "description": "Cli for running benchmark tests for n8n", "main": "dist/index", "scripts": { diff --git a/packages/@n8n/chat-hub/package.json b/packages/@n8n/chat-hub/package.json index e641fb1972e..b13f60e4ad9 100644 --- a/packages/@n8n/chat-hub/package.json +++ b/packages/@n8n/chat-hub/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/chat-hub", - "version": "1.15.0", + "version": "1.16.0", "scripts": { "clean": "rimraf dist .turbo", "dev": "pnpm watch", diff --git a/packages/@n8n/client-oauth2/package.json b/packages/@n8n/client-oauth2/package.json index 5bc6de41918..a65ecbe910b 100644 --- a/packages/@n8n/client-oauth2/package.json +++ b/packages/@n8n/client-oauth2/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/client-oauth2", - "version": "1.6.0", + "version": "1.7.0", "scripts": { "clean": "rimraf dist .turbo", "dev": "pnpm watch", diff --git a/packages/@n8n/computer-use/package.json b/packages/@n8n/computer-use/package.json index bff3f80f1f3..b73fbea31a0 100644 --- a/packages/@n8n/computer-use/package.json +++ b/packages/@n8n/computer-use/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/computer-use", - "version": "0.7.0", + "version": "0.8.0", "description": "Local AI gateway for n8n AI Assistant — filesystem, shell, screenshots, mouse/keyboard, and browser automation", "publishConfig": { "bin": { diff --git a/packages/@n8n/config/package.json b/packages/@n8n/config/package.json index ce9104a93b8..d725b7d5fcc 100644 --- a/packages/@n8n/config/package.json +++ b/packages/@n8n/config/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/config", - "version": "2.21.0", + "version": "2.22.0", "scripts": { "clean": "rimraf dist .turbo", "dev": "pnpm watch", diff --git a/packages/@n8n/constants/package.json b/packages/@n8n/constants/package.json index c3362058e91..b9eb41cb5a2 100644 --- a/packages/@n8n/constants/package.json +++ b/packages/@n8n/constants/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/constants", - "version": "0.24.0", + "version": "0.25.0", "scripts": { "clean": "rimraf dist .turbo", "dev": "pnpm watch", diff --git a/packages/@n8n/create-node/package.json b/packages/@n8n/create-node/package.json index 6c0b20f9ea2..8cf3d7f22f0 100644 --- a/packages/@n8n/create-node/package.json +++ b/packages/@n8n/create-node/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/create-node", - "version": "0.31.0", + "version": "0.32.0", "description": "Official CLI to create new community nodes for n8n", "bin": { "create-node": "bin/create-node.cjs" diff --git a/packages/@n8n/db/package.json b/packages/@n8n/db/package.json index afb8d6a564c..46d53a3501e 100644 --- a/packages/@n8n/db/package.json +++ b/packages/@n8n/db/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/db", - "version": "1.22.0", + "version": "1.23.0", "scripts": { "clean": "rimraf dist .turbo", "dev": "pnpm watch", diff --git a/packages/@n8n/decorators/package.json b/packages/@n8n/decorators/package.json index 5ecc0e7a12b..46b6d7859d8 100644 --- a/packages/@n8n/decorators/package.json +++ b/packages/@n8n/decorators/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/decorators", - "version": "1.22.0", + "version": "1.23.0", "scripts": { "clean": "rimraf dist .turbo", "dev": "pnpm watch", diff --git a/packages/@n8n/engine/package.json b/packages/@n8n/engine/package.json index 46a24f0fe0e..a95fbb59c07 100644 --- a/packages/@n8n/engine/package.json +++ b/packages/@n8n/engine/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/engine", - "version": "0.3.0", + "version": "0.4.0", "description": "n8n workflow execution engine (v2)", "scripts": { "clean": "rimraf dist .turbo compiled", diff --git a/packages/@n8n/eslint-plugin-community-nodes/package.json b/packages/@n8n/eslint-plugin-community-nodes/package.json index 2200752cc42..dbd527d2ac3 100644 --- a/packages/@n8n/eslint-plugin-community-nodes/package.json +++ b/packages/@n8n/eslint-plugin-community-nodes/package.json @@ -1,7 +1,7 @@ { "name": "@n8n/eslint-plugin-community-nodes", "type": "module", - "version": "0.17.0", + "version": "0.18.0", "main": "./dist/plugin.js", "types": "./dist/plugin.d.ts", "exports": { diff --git a/packages/@n8n/expression-runtime/package.json b/packages/@n8n/expression-runtime/package.json index adb671618a0..ec77dda04a7 100644 --- a/packages/@n8n/expression-runtime/package.json +++ b/packages/@n8n/expression-runtime/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/expression-runtime", - "version": "0.14.0", + "version": "0.15.0", "description": "Secure, isolated expression evaluation runtime for n8n", "main": "dist/cjs/index.js", "module": "dist/esm/index.js", diff --git a/packages/@n8n/imap/package.json b/packages/@n8n/imap/package.json index 06e70726678..d65f96aac10 100644 --- a/packages/@n8n/imap/package.json +++ b/packages/@n8n/imap/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/imap", - "version": "0.19.0", + "version": "0.20.0", "scripts": { "clean": "rimraf dist .turbo", "dev": "pnpm watch", diff --git a/packages/@n8n/instance-ai/package.json b/packages/@n8n/instance-ai/package.json index f1ba9cefd3b..733098b6f82 100644 --- a/packages/@n8n/instance-ai/package.json +++ b/packages/@n8n/instance-ai/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/instance-ai", - "version": "1.7.0", + "version": "1.8.0", "scripts": { "clean": "rimraf dist .turbo", "typecheck": "tsc --noEmit", diff --git a/packages/@n8n/mcp-browser/package.json b/packages/@n8n/mcp-browser/package.json index 6946580ae49..a997f9e6881 100644 --- a/packages/@n8n/mcp-browser/package.json +++ b/packages/@n8n/mcp-browser/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/mcp-browser", - "version": "0.6.0", + "version": "0.7.0", "description": "Browser automation MCP tools built on Playwright, WebDriver BiDi, and safaridriver", "main": "dist/index.js", "types": "dist/index.d.ts", diff --git a/packages/@n8n/node-cli/package.json b/packages/@n8n/node-cli/package.json index aa9d55bc95e..025741c3b43 100644 --- a/packages/@n8n/node-cli/package.json +++ b/packages/@n8n/node-cli/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/node-cli", - "version": "0.32.0", + "version": "0.33.0", "description": "Official CLI for developing community nodes for n8n", "bin": { "n8n-node": "bin/n8n-node.mjs" diff --git a/packages/@n8n/nodes-langchain/package.json b/packages/@n8n/nodes-langchain/package.json index f16fe7adbb5..d511e307bb7 100644 --- a/packages/@n8n/nodes-langchain/package.json +++ b/packages/@n8n/nodes-langchain/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/n8n-nodes-langchain", - "version": "2.22.0", + "version": "2.23.0", "description": "", "main": "index.js", "exports": { @@ -270,7 +270,7 @@ "@n8n/typeorm": "0.3.20-16", "mysql2": "3.17.0", "@n8n/typescript-config": "workspace:*", - "@oracle/langchain-oracledb":"0.2.0", + "@oracle/langchain-oracledb": "0.2.0", "@pinecone-database/pinecone": "^5.0.2", "@qdrant/js-client-rest": "^1.16.2", "@supabase/supabase-js": "catalog:", diff --git a/packages/@n8n/permissions/package.json b/packages/@n8n/permissions/package.json index 4819fde04cd..46cc39019ce 100644 --- a/packages/@n8n/permissions/package.json +++ b/packages/@n8n/permissions/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/permissions", - "version": "0.60.0", + "version": "0.61.0", "scripts": { "clean": "rimraf dist .turbo", "dev": "pnpm watch", diff --git a/packages/@n8n/scan-community-package/package.json b/packages/@n8n/scan-community-package/package.json index b93c7ba0901..d13404c8cf0 100644 --- a/packages/@n8n/scan-community-package/package.json +++ b/packages/@n8n/scan-community-package/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/scan-community-package", - "version": "0.19.0", + "version": "0.20.0", "description": "Static code analyser for n8n community packages", "license": "none", "bin": "scanner/cli.mjs", diff --git a/packages/@n8n/syslog-client/package.json b/packages/@n8n/syslog-client/package.json index 8e08063e42f..d6ebfd67436 100644 --- a/packages/@n8n/syslog-client/package.json +++ b/packages/@n8n/syslog-client/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/syslog-client", - "version": "1.3.0", + "version": "1.4.0", "scripts": { "clean": "rimraf dist .turbo", "dev": "pnpm watch", diff --git a/packages/@n8n/task-runner/package.json b/packages/@n8n/task-runner/package.json index e4bf88598b6..c9710de6aab 100644 --- a/packages/@n8n/task-runner/package.json +++ b/packages/@n8n/task-runner/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/task-runner", - "version": "2.22.0", + "version": "2.23.0", "scripts": { "clean": "rimraf dist .turbo", "start": "node dist/start.js", diff --git a/packages/@n8n/utils/package.json b/packages/@n8n/utils/package.json index 122468d8dba..64e997aa7ab 100644 --- a/packages/@n8n/utils/package.json +++ b/packages/@n8n/utils/package.json @@ -1,7 +1,7 @@ { "name": "@n8n/utils", "type": "module", - "version": "1.31.0", + "version": "1.32.0", "files": [ "dist" ], diff --git a/packages/@n8n/vitest-config/package.json b/packages/@n8n/vitest-config/package.json index 8f9535d5c96..5f3946b16b9 100644 --- a/packages/@n8n/vitest-config/package.json +++ b/packages/@n8n/vitest-config/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/vitest-config", - "version": "1.11.0", + "version": "1.12.0", "type": "module", "peerDependencies": { "vite": "catalog:", diff --git a/packages/@n8n/workflow-sdk/package.json b/packages/@n8n/workflow-sdk/package.json index f015d835426..05e6c0a2251 100644 --- a/packages/@n8n/workflow-sdk/package.json +++ b/packages/@n8n/workflow-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/workflow-sdk", - "version": "0.15.0", + "version": "0.16.0", "description": "TypeScript SDK for programmatically creating n8n workflows", "exports": { ".": { diff --git a/packages/cli/package.json b/packages/cli/package.json index 23e348fe09f..d9224032c27 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "n8n", - "version": "2.22.0", + "version": "2.23.0", "description": "n8n Workflow Automation Tool", "main": "dist/index", "types": "dist/index.d.ts", diff --git a/packages/core/package.json b/packages/core/package.json index a0a94426ba2..1b916c9430a 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "n8n-core", - "version": "2.22.0", + "version": "2.23.0", "description": "Core functionality of n8n", "main": "dist/index", "types": "dist/index.d.ts", diff --git a/packages/frontend/@n8n/chat/package.json b/packages/frontend/@n8n/chat/package.json index 529e1b21ac3..83f2d2ac0bb 100644 --- a/packages/frontend/@n8n/chat/package.json +++ b/packages/frontend/@n8n/chat/package.json @@ -1,6 +1,6 @@ { "name": "@n8n/chat", - "version": "1.22.0", + "version": "1.23.0", "scripts": { "dev": "pnpm run --dir=../storybook dev --initial-path=/docs/chat-chat--docs", "build": "pnpm build:vite && pnpm build:bundle", diff --git a/packages/frontend/@n8n/design-system/package.json b/packages/frontend/@n8n/design-system/package.json index c3b02b28a0b..ff40df1d9fc 100644 --- a/packages/frontend/@n8n/design-system/package.json +++ b/packages/frontend/@n8n/design-system/package.json @@ -1,7 +1,7 @@ { "type": "module", "name": "@n8n/design-system", - "version": "2.22.0", + "version": "2.23.0", "main": "src/index.ts", "import": "src/index.ts", "scripts": { diff --git a/packages/frontend/@n8n/i18n/package.json b/packages/frontend/@n8n/i18n/package.json index ae70ba1fb43..cc3d968a6ee 100644 --- a/packages/frontend/@n8n/i18n/package.json +++ b/packages/frontend/@n8n/i18n/package.json @@ -1,7 +1,7 @@ { "name": "@n8n/i18n", "type": "module", - "version": "2.22.0", + "version": "2.23.0", "files": [ "dist" ], diff --git a/packages/frontend/@n8n/rest-api-client/package.json b/packages/frontend/@n8n/rest-api-client/package.json index eed0e31ea66..79392a43164 100644 --- a/packages/frontend/@n8n/rest-api-client/package.json +++ b/packages/frontend/@n8n/rest-api-client/package.json @@ -1,7 +1,7 @@ { "name": "@n8n/rest-api-client", "type": "module", - "version": "2.22.0", + "version": "2.23.0", "files": [ "dist" ], diff --git a/packages/frontend/@n8n/stores/package.json b/packages/frontend/@n8n/stores/package.json index 9d781fea4e1..fa057c6da30 100644 --- a/packages/frontend/@n8n/stores/package.json +++ b/packages/frontend/@n8n/stores/package.json @@ -1,7 +1,7 @@ { "name": "@n8n/stores", "type": "module", - "version": "2.22.0", + "version": "2.23.0", "files": [ "dist" ], diff --git a/packages/frontend/editor-ui/package.json b/packages/frontend/editor-ui/package.json index d55bb1a6455..239e7e56d3b 100644 --- a/packages/frontend/editor-ui/package.json +++ b/packages/frontend/editor-ui/package.json @@ -1,6 +1,6 @@ { "name": "n8n-editor-ui", - "version": "2.22.0", + "version": "2.23.0", "description": "Workflow Editor UI for n8n", "main": "index.js", "type": "module", diff --git a/packages/nodes-base/package.json b/packages/nodes-base/package.json index 8bebdfe3a9a..3c755aa5ef5 100644 --- a/packages/nodes-base/package.json +++ b/packages/nodes-base/package.json @@ -1,6 +1,6 @@ { "name": "n8n-nodes-base", - "version": "2.22.0", + "version": "2.23.0", "description": "Base nodes of n8n", "main": "index.js", "scripts": { diff --git a/packages/workflow/package.json b/packages/workflow/package.json index aa6356670d7..c794c0748ae 100644 --- a/packages/workflow/package.json +++ b/packages/workflow/package.json @@ -1,6 +1,6 @@ { "name": "n8n-workflow", - "version": "2.22.0", + "version": "2.23.0", "description": "Workflow base code of n8n", "types": "dist/esm/index.d.ts", "module": "dist/esm/index.js",