Commit graph

4095 commits

Author SHA1 Message Date
Aaron Gutierrez 15ffd4fb9f
fix(Asana Node): Omit body from GET, HEAD, and DELETE requests (#8057)
Avoid unnecessarily including a request body with GET and HEAD requests.
Per RFC 7230 clients should not include a body for these requests, and
we (Asana) are rolling out an infrastructure change that will cause
these requests to fail.
2023-12-21 19:21:08 +01:00
Ricardo Espinoza a169b74062
fix(Redis Trigger Node): Activating a workflow with a Redis trigger fails (#8129)
## Summary
> Describe what the PR does and how to test. Photos and videos are
recommended.

We were awaiting for the promise to resolve before returning. Because
the trigger method does not return until the first message is received
or the connection errors, the requests that actives the workflows did
not respond making the activation button irresponsive.

Without the change:

https://www.loom.com/share/769b26d5d4ee407e999344fab3905eae

With the change:

https://www.loom.com/share/d1691ee1941248bc97f2ed97b0c129a3

## Related tickets and issues

https://linear.app/n8n/issue/ADO-895/activating-a-workflow-with-a-redis-trigger-fails


## Review / Merge checklist
- [x] PR title and summary are descriptive. **Remember, the title
automatically goes into the changelog. Use `(no-changelog)` otherwise.**
([conventions](https://github.com/n8n-io/n8n/blob/master/.github/pull_request_title_conventions.md))
- [x] [Docs updated](https://github.com/n8n-io/n8n-docs) or follow-up
ticket created.
2023-12-21 12:29:26 -05:00
कारतोफ्फेलस्क्रिप्ट™ 1d2666b37c
refactor(Peekalink Node): Stricter typing for Peekalink api call + Tests (no-changelog) (#8125)
This PR is an example for how we can
1. improve typing and remove boilerplate code in may of our nodes
2. use nock to write effective unit tests for nodes that make external
calls

## Review / Merge checklist
- [x] PR title and summary are descriptive
- [x] Add tests
2023-12-21 18:22:32 +01:00
कारतोफ्फेलस्क्रिप्ट™ 5f27c20a00
feat(Snowflake Node): Update snowflake-sdk (no-changelog) (#8087)
This finally removes `aws-sdk` v2 from n8n's dependencies, which should
reduce n8n dependencies and docker image size by about 10%.
2023-12-21 14:52:54 +01:00
github-actions[bot] b67b5ae6b2
🚀 Release 1.22.0 (#8115)
#
[1.22.0](https://github.com/n8n-io/n8n/compare/n8n@1.21.0...n8n@1.22.0)
(2023-12-21)


### Bug Fixes

* **core:** Close db connection gracefully when exiting
([#8045](https://github.com/n8n-io/n8n/pull/8045))
([e69707e](e69707efd4))
* **core:** Consider timeout in shutdown an error
([#8050](https://github.com/n8n-io/n8n/pull/8050))
([4cae976](4cae976a3b))
* **core:** Do not display error when stopping jobless execution in
queue mode ([#8007](https://github.com/n8n-io/n8n/pull/8007))
([8e6b951](8e6b951a76))
* **core:** Fix shutdown if terminating before hooks are initialized
([#8047](https://github.com/n8n-io/n8n/pull/8047))
([6ae2f5e](6ae2f5efea))
* **core:** Handle multiple termination signals correctly
([#8046](https://github.com/n8n-io/n8n/pull/8046))
([67bd8ad](67bd8ad698))
* **core:** Initialize queue once in queue mode
([#8025](https://github.com/n8n-io/n8n/pull/8025))
([53c0b49](53c0b49d15))
* **core:** Prevent axios from force setting a form-urlencoded
content-type ([#8117](https://github.com/n8n-io/n8n/pull/8117))
([bba9576](bba95761e2))
* **core:** Remove circular references before serializing executions in
public API ([#8043](https://github.com/n8n-io/n8n/pull/8043))
([989888d](989888d9bc))
* **core:** Restore workflow ID during execution creation
([#8031](https://github.com/n8n-io/n8n/pull/8031))
([c5e6ba8](c5e6ba8cdd))
* **core:** Use relative imports for dynamic imports in
SecurityAuditService ([#8086](https://github.com/n8n-io/n8n/pull/8086))
([785bf99](785bf9974e))
* **core:** Stop binary data restoration from preventing execution from
finishing ([#8082](https://github.com/n8n-io/n8n/pull/8082))
([5ffff1b](5ffff1bb22))
* **editor:** Add back credential `use` permission
([#8023](https://github.com/n8n-io/n8n/pull/8023))
([329e5bf](329e5bf9ee))
* **editor:** Cleanup Executions page component
([#8053](https://github.com/n8n-io/n8n/pull/8053))
([2689c37](2689c37e87))
* **editor:** Disable auto scroll and list size check when clicking on
executions ([#7983](https://github.com/n8n-io/n8n/pull/7983))
([fcb8b91](fcb8b91f37))
* **editor:** Ensure execution data overrides pinned data when copying
in executions view ([#8009](https://github.com/n8n-io/n8n/pull/8009))
([1d1cb0d](1d1cb0d3c5))
* **editor:** Fix copy/paste issue when switch node is in workflow
([#8103](https://github.com/n8n-io/n8n/pull/8103))
([4b86926](4b86926752))
* **editor:** Make keyboard shortcuts more strict; don't accept extra
Ctrl/Alt/Shift keys ([#8024](https://github.com/n8n-io/n8n/pull/8024))
([8df49e1](8df49e134d))
* **editor:** Show credential share info only to appropriate users
([#8020](https://github.com/n8n-io/n8n/pull/8020))
([b29b4d4](b29b4d442b))
* **editor:** Turn off executions list auto-refresh after leaving the
page ([#8005](https://github.com/n8n-io/n8n/pull/8005))
([e3c363d](e3c363d72c))
* **editor:** Update image sizes in template description not to be full
width always ([#8037](https://github.com/n8n-io/n8n/pull/8037))
([63a6e7e](63a6e7e034))
* **ActiveCampaign Node:** Fix pagination issue when loading tags
([#8017](https://github.com/n8n-io/n8n/pull/8017))
([1943857](1943857231))
* **HTTP Request Node:** Do not create circular references in HTTP
request node output ([#8030](https://github.com/n8n-io/n8n/pull/8030))
([5b7ea16](5b7ea16d9a))
* Upgrade axios to address CVE-2023-45857
([#7713](https://github.com/n8n-io/n8n/pull/7713))
([64eb9bb](64eb9bbc36))


### Features

* Add option to `returnIntermediateSteps` for AI agents
([#8113](https://github.com/n8n-io/n8n/pull/8113))
([7806a65](7806a65229))
* **core:** Add config option to prefer GET request over LIST when using
Hashicorp Vault ([#8049](https://github.com/n8n-io/n8n/pull/8049))
([439a22d](439a22d68f))
* **core:** Add N8N_GRACEFUL_SHUTDOWN_TIMEOUT env var
([#8068](https://github.com/n8n-io/n8n/pull/8068))
([614f488](614f488386))
* **editor:** Add lead enrichment suggestions to workflow list
([#8042](https://github.com/n8n-io/n8n/pull/8042))
([36a923c](36a923cf7b))
* **editor:** Finalize workers view
([#8052](https://github.com/n8n-io/n8n/pull/8052))
([edfa784](edfa78414d))
* **editor:** Gracefully ignore invalid payloads in postMessage handler
([#8096](https://github.com/n8n-io/n8n/pull/8096))
([9d22c7a](9d22c7a278))
* **editor:** Upgrade frontend tooling to address a few vulnerabilities
([#8100](https://github.com/n8n-io/n8n/pull/8100))
([19b7f1f](19b7f1ffb1))
* **Filter Node:** Overhaul UI by adding the new filter component
([#8016](https://github.com/n8n-io/n8n/pull/8016))
([3d53052](3d530522f8))
* **Respond to Webhook Node:** Overhaul with improvements like returning
all items ([#8093](https://github.com/n8n-io/n8n/pull/8093))
([32d397e](32d397eff3))


### Performance Improvements

* **editor:** Improve canvas rendering performance
([#8022](https://github.com/n8n-io/n8n/pull/8022))
([b780436](b780436a6b))

Co-authored-by: ivov <ivov@users.noreply.github.com>
2023-12-21 13:51:24 +01:00
Marcus 32d397eff3
feat(Respond to Webhook Node): Overhaul with improvements like returning all items (#8093) 2023-12-21 13:03:26 +01:00
Jon 6580b927b3
docs: Add notice to TheHive triggers to highlight manual steps (#8051) 2023-12-21 09:40:37 +01:00
Iván Ovejero c170dd1da3
refactor(Discord Node): Stop reporting to Sentry inaccessible guild error (no-changelog) (#8095)
Ref Sentry issue: https://n8nio.sentry.io/issues/4738702202
2023-12-19 15:07:51 +01:00
कारतोफ्फेलस्क्रिप्ट™ 464b565283
ci: Remove unnecessary async/await, enable await-thenable linting rule (no-changelog) (#8076)
## Summary
We accidentally made some functions `async` in
https://github.com/n8n-io/n8n/pull/7846
This PR reverts that change. 

## Review / Merge checklist
- [x] PR title and summary are descriptive.
2023-12-19 13:52:42 +01:00
कारतोफ्फेलस्क्रिप्ट™ 5b7ea16d9a
fix(HTTP Request Node): Do not create circular references in HTTP request node output (#8030)
## Summary
Remove unused `response.request` circular reference in http response
objects

## Related tickets
[PAY-1119](https://linear.app/n8n/issue/PAY-1119)

## Review / Merge checklist
- [x] PR title and summary are descriptive.
2023-12-15 16:40:39 +01:00
Elias Meire 3d530522f8
feat(Filter Node): Overhaul UI by adding the new filter component (#8016)
## Summary

Adds a new version of the Filter node (v2) that uses the filter
component (like in the new If node).

<img width="1612" alt="image"
src="https://github.com/n8n-io/n8n/assets/8850410/bca38e47-305f-4a9e-9c5c-ec550b9f7d4a">

Test by adding a new Filter node to the canvas and trying different
operators/options. Example workflow can be found in
`packages/nodes-base/nodes/Filter/test/workflow_v2.json`

## Related tickets and issues
https://linear.app/n8n/issue/NODE-982



## Review / Merge checklist
- [x] PR title and summary are descriptive. **Remember, the title
automatically goes into the changelog. Use `(no-changelog)` otherwise.**
([conventions](https://github.com/n8n-io/n8n/blob/master/.github/pull_request_title_conventions.md))
- [x] [Docs updated](https://github.com/n8n-io/n8n-docs) or follow-up
ticket created.
- [x] Tests included.
> A bug is not considered fixed, unless a test is added to prevent it
from happening again.
   > A feature is not complete without tests.

Co-authored-by: Michael Kret <michael.k@radency.com>
2023-12-15 11:56:49 +01:00
कारतोफ्फेलस्क्रिप्ट™ ce1ae6a7c0 Merge tag 'n8n@1.21.0' 2023-12-13 16:48:58 +01:00
github-actions[bot] 1516c84dad
🚀 Release 1.21.0 (#8019)
#
[1.21.0](https://github.com/n8n-io/n8n/compare/n8n@1.20.0...n8n@1.21.0)
(2023-12-13)


### Bug Fixes

* **core:** Ensure inviter and invitee are set correctly in invite link
([#7943](https://github.com/n8n-io/n8n/issues/7943))
([386bd61](386bd61967))
* **core:** Fix user comparison in same-user subworkflow caller policy
([#7913](https://github.com/n8n-io/n8n/issues/7913))
([92bab72](92bab72cff))
* **core:** Perform multi-main leader check against key ID
([#7964](https://github.com/n8n-io/n8n/issues/7964))
([1a87f70](1a87f70e84))
* **core:** Ensure external hooks post workflow execute run in queue
mode ([#7947](https://github.com/n8n-io/n8n/issues/7947))
([3ba7deb](3ba7deb337))
* **core:** Fix issue preventing secrets from loading if the path
contains - or / ([#7988](https://github.com/n8n-io/n8n/issues/7988))
([0ac9594](0ac959463f))
* **core:** Restrict updating/deleting of shared but not owned
credentials ([#7950](https://github.com/n8n-io/n8n/issues/7950))
([42e828d](42e828d5c6))
* **core:** Prevent workflow history saving error from happening
([#7812](https://github.com/n8n-io/n8n/issues/7812))
([e5581ce](e5581ce802))
* **editor:** Add missing string for worker in log streaming
([#7971](https://github.com/n8n-io/n8n/issues/7971))
([148bc1d](148bc1d303))
* **editor:** Allow SSH protocol in git repository URL for environments
([#7944](https://github.com/n8n-io/n8n/issues/7944))
([bc1c72f](bc1c72f992))
* **editor:** Fix bug with node names with certain characters
([#8013](https://github.com/n8n-io/n8n/issues/8013))
([26f0d57](26f0d57f5f))
* **editor:** Fix Webhook URL expansion icon
([#8011](https://github.com/n8n-io/n8n/issues/8011))
([b00b905](b00b9057a4))
* **editor:** Prevent opening NDV search if `/` is typed in a
contenteditable element
([#7968](https://github.com/n8n-io/n8n/issues/7968))
([e8a493f](e8a493f718))
* **editor:** Return early in ws message handler if no 'command' keyword
is found ([#7946](https://github.com/n8n-io/n8n/issues/7946))
([5b2defc](5b2defc867))
* **FileMaker Node:** Prevent erroring on zero fields loaded
([#7955](https://github.com/n8n-io/n8n/issues/7955))
([10ad386](10ad386604))
* **Google Sheets Node:** Prevent erroring on zero sheet search results
([#7957](https://github.com/n8n-io/n8n/issues/7957))
([9b877a9](9b877a9427))
* **Google Sheets Node:** Prevent erroring when fetching mapping columns
([#7972](https://github.com/n8n-io/n8n/issues/7972))
([29a1066](29a10668d1))
* **Postgres Node:** Do not include id column in upsert fields selection
if it's not unique ([#7975](https://github.com/n8n-io/n8n/issues/7975))
([435392c](435392cbfe))
* **Postgres Trigger Node:** Increase manual trigger timeout from 30 to
60 seconds ([#8015](https://github.com/n8n-io/n8n/issues/8015))
([09a5729](09a5729305))
* **Webhook Node:** Binary data handling
([#7804](https://github.com/n8n-io/n8n/issues/7804))
([565b409](565b409a82))
* **Webhook Node:** Do not create binary data when there is no data in
the request ([#8000](https://github.com/n8n-io/n8n/issues/8000))
([70f0755](70f0755278))


### Features

* **core:** Add config option for external secret update interval
([#7995](https://github.com/n8n-io/n8n/issues/7995))
([b6c1c04](b6c1c04b54))
* AI nodes usability fixes + Summarization Chain V2
([#7949](https://github.com/n8n-io/n8n/issues/7949))
([dcf1286](dcf12867b3))
* **editor:** Data transformation nodes and actions in Nodes Panel
([#7760](https://github.com/n8n-io/n8n/issues/7760))
([675ec21](675ec21d33))
* **editor:** Add AppCues tracking for onboarding event
([#7945](https://github.com/n8n-io/n8n/issues/7945))
([04cabaf](04cabafef7))
* **editor:** Add option to disable NDV in workflow previews
([#7990](https://github.com/n8n-io/n8n/issues/7990))
([393afef](393afef174))
* **editor:** Filter component + implement in If node
([#7490](https://github.com/n8n-io/n8n/issues/7490))
([8a53434](8a5343401d))
* **editor:** Show template credential setup based on feature flag
([#7989](https://github.com/n8n-io/n8n/issues/7989))
([08ee307](08ee307209))
* **editor:** Introduce advanced permissions
([#7844](https://github.com/n8n-io/n8n/issues/7844))
([dbd62a4](dbd62a4992))
* **Google Ads Node:** Update to support v15
([#7962](https://github.com/n8n-io/n8n/issues/7962))
([7f01269](7f0126915a))
* **Local File Trigger Node:** Add polling option typically good to
watch network files/folders
([#7942](https://github.com/n8n-io/n8n/issues/7942))
([2fbdfec](2fbdfec0c0))
* **n8n Form Trigger Node:** Improvements
([#7571](https://github.com/n8n-io/n8n/issues/7571))
([953a58f](953a58f18b))

Co-authored-by: ivov <ivov@users.noreply.github.com>
2023-12-13 16:34:00 +01:00
Jon 1943857231
fix(ActiveCampaign Node): Fix pagination issue when loading tags (#8017)
## Summary
Changes the getTags method to use the paginated API call. 


## Related tickets and issues

https://community.n8n.io/t/activecampaign-node-is-not-loading-all-tags/34169
2023-12-13 15:24:43 +00:00
कारतोफ्फेलस्क्रिप्ट™ d7ce4624c8 Merge tag 'n8n@1.20.0' 2023-12-13 16:11:30 +01:00
Michael Kret 953a58f18b
feat(n8n Form Trigger Node): Improvements (#7571)
Github issue / Community forum post (link here to close automatically):

---------

Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
Co-authored-by: Giulio Andreini <andreini@netseven.it>
2023-12-13 17:00:51 +02:00
Elias Meire 8a5343401d
feat(editor): Filter component + implement in If node (#7490)
New Filter component + implementation in If node (v2)

<img width="3283" alt="image"
src="https://github.com/n8n-io/n8n/assets/8850410/35c379ef-4b62-4d06-82e7-673d4edcd652">

---------

Co-authored-by: Giulio Andreini <andreini@netseven.it>
Co-authored-by: Michael Kret <michael.k@radency.com>
2023-12-13 14:45:22 +01:00
Jon 09a5729305
fix(Postgres Trigger Node): Increase manual trigger timeout from 30 to 60 seconds (#8015) 2023-12-13 13:04:16 +00:00
Jon 9229055f7b
docs: Add aliases to compare datasets node (#8010)
## Summary
Make the Compare Datasets node findable when typing "sync" or "syncing"
in the Nodes panel


https://linear.app/n8n/issue/NODE-991/make-the-compare-datasets-node-finable-when-typing-sync-or-syncing-in
2023-12-13 11:32:00 +00:00
Giulio Andreini 8f364087c9
docs(editor): Change to Summarize icon and Advanced section description (no-changelog) (#8008)
## Summary
- Change the description of the Advanced" section
- Replace the icon of Summarize



## Related tickets and issues
https://linear.app/n8n/issue/NODE-984/data-transformations-menu-minor-fixes



## Review / Merge checklist
- [ ] PR title and summary are descriptive. **Remember, the title
automatically goes into the changelog. Use `(no-changelog)` otherwise.**
([conventions](https://github.com/n8n-io/n8n/blob/master/.github/pull_request_title_conventions.md))
- [ ] [Docs updated](https://github.com/n8n-io/n8n-docs) or follow-up
ticket created.
- [ ] Tests included.
> A bug is not considered fixed, unless a test is added to prevent it
from happening again.
   > A feature is not complete without tests.
2023-12-13 12:18:29 +01:00
Michael Kret 70f0755278
fix(Webhook Node): Do not create binary data when there is no data in the request (#8000)
https://linear.app/n8n/issue/NODE-980/do-not-create-binary-data-for-webhooks-when-there-is-no-data-in-the

related:
https://github.com/n8n-io/n8n/pull/7804/files#r1422641833

---------

Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
2023-12-13 05:13:48 +02:00
Benjamin Loison 61129863f1
docs: Replace http://faircode.io to https://faircode.io in .md files (#7908)
## Summary

Commit generated with:

```bash
grep -rl 'http://faircode.io' --include=*.md . | xargs sed -i 's/http:\/\/faircode.io/https:\/\/faircode.io/g'
```

## Review / Merge checklist
- [X] PR title and summary are descriptive. **Remember, the title
automatically goes into the changelog. Use `(no-changelog)` otherwise.**
([conventions](https://github.com/n8n-io/n8n/blob/master/.github/pull_request_title_conventions.md))
- [ ] [Docs updated](https://github.com/n8n-io/n8n-docs) or follow-up
ticket created.
- [ ] Tests included.
2023-12-12 15:23:22 +00:00
Michael Kret 435392cbfe
fix(Postgres Node): Do not include id column in upsert fields selection if it's not unique (#7975)
## Summary
Do not include id column in upsert fields selection if it's not unique
Forum:
https://community.n8n.io/t/postgres-node-insert-or-update-unique-column-name/32520
2023-12-11 17:34:24 +02:00
Marcus 2fbdfec0c0
feat(Local File Trigger Node): Add polling option typically good to watch network files/folders (#7942)
Adding more chokidar options to watch files/folders especially
usePolling typically good to watch network volumes. Inspired by
[https://github.com/n8n-io/n8n/pull/4914/files](https://github.com/n8n-io/n8n/pull/4914/files)
2023-12-11 13:03:28 +01:00
Jon 97e39c39d9
docs: Replace references to set node (no-changelog) (#7973)
## Summary
This replaces the set node references with edit fields.

Ref: https://n8nio.slack.com/archives/C036PA5D42D/p1702040900165709
2023-12-11 10:10:03 +00:00
Iván Ovejero 29a10668d1
fix(Google Sheets Node): Prevent erroring when fetching mapping columns (#7972)
## Summary
https://n8nio.sentry.io/issues/4709551520

Follow-up to: https://github.com/n8n-io/n8n/pull/7957

...

#### How to test the change:
1. ...


## Issues fixed
Include links to Github issue or Community forum post or **Linear
ticket**:
> Important in order to close automatically and provide context to
reviewers

...


## Review / Merge checklist
- [ ] PR title and summary are descriptive. **Remember, the title
automatically goes into the changelog. Use `(no-changelog)` otherwise.**
([conventions](https://github.com/n8n-io/n8n/blob/master/.github/pull_request_title_conventions.md))
- [ ] [Docs updated](https://github.com/n8n-io/n8n-docs) or follow-up
ticket created.
- [ ] Tests included.
> A bug is not considered fixed, unless a test is added to prevent it
from happening again. A feature is not complete without tests.
  >
> *(internal)* You can use Slack commands to trigger [e2e
tests](https://www.notion.so/n8n/How-to-use-Test-Instances-d65f49dfc51f441ea44367fb6f67eb0a?pvs=4#a39f9e5ba64a48b58a71d81c837e8227)
or [deploy test
instance](https://www.notion.so/n8n/How-to-use-Test-Instances-d65f49dfc51f441ea44367fb6f67eb0a?pvs=4#f6a177d32bde4b57ae2da0b8e454bfce)
or [deploy early access version on
Cloud](https://www.notion.so/n8n/Cloudbot-3dbe779836004972b7057bc989526998?pvs=4#fef2d36ab02247e1a0f65a74f6fb534e).
2023-12-08 17:25:42 +01:00
Jon 7f0126915a
feat(Google Ads Node): Update to support v15 (#7962)
Updates Google Ads node to use the v15 API for
https://community.n8n.io/t/google-ads-400-bad-request-error/21709/26
2023-12-08 14:41:49 +00:00
Iván Ovejero 94582552f6
ci: Fix lint in nodes-base to fix build (no-changelog) (#7966)
## Summary
We recently merged the `no-plain-errors` rule and one instance seems to
have slipped through.

Ref: https://github.com/n8n-io/n8n/pull/7961

...

#### How to test the change:
1. ...


## Issues fixed
Include links to Github issue or Community forum post or **Linear
ticket**:
> Important in order to close automatically and provide context to
reviewers

...


## Review / Merge checklist
- [ ] PR title and summary are descriptive. **Remember, the title
automatically goes into the changelog. Use `(no-changelog)` otherwise.**
([conventions](https://github.com/n8n-io/n8n/blob/master/.github/pull_request_title_conventions.md))
- [ ] [Docs updated](https://github.com/n8n-io/n8n-docs) or follow-up
ticket created.
- [ ] Tests included.
> A bug is not considered fixed, unless a test is added to prevent it
from happening again. A feature is not complete without tests.
  >
> *(internal)* You can use Slack commands to trigger [e2e
tests](https://www.notion.so/n8n/How-to-use-Test-Instances-d65f49dfc51f441ea44367fb6f67eb0a?pvs=4#a39f9e5ba64a48b58a71d81c837e8227)
or [deploy test
instance](https://www.notion.so/n8n/How-to-use-Test-Instances-d65f49dfc51f441ea44367fb6f67eb0a?pvs=4#f6a177d32bde4b57ae2da0b8e454bfce)
or [deploy early access version on
Cloud](https://www.notion.so/n8n/Cloudbot-3dbe779836004972b7057bc989526998?pvs=4#fef2d36ab02247e1a0f65a74f6fb534e).
2023-12-08 13:43:10 +01:00
oleg dcf12867b3
feat: AI nodes usability fixes + Summarization Chain V2 (#7949)
Fixes:
- Refactor connection snapping when dragging and enable it also for
non-main connection types
- Fix propagation of errors from sub-nodes
- Fix chat scrolling when sending/receiving messages
- Prevent empty chat messages
- Fix sub-node selected styles
- Fix output names text overflow

Usability improvements:
- Auto-add manual chat trigger for agents & chain nodes
- Various labels and description updates
- Make the output parser input optional for Basic LLM Chain
- Summarization Chain V2 with a simplified document loader & text
chunking mode

#### How to test the change:
Example workflow showcasing different operation mode of the new
summarization chain:

[Summarization_V2.json](https://github.com/n8n-io/n8n/files/13599901/Summarization_V2.json)


## Issues fixed
Include links to Github issue or Community forum post or **Linear
ticket**:
> Important in order to close automatically and provide context to
reviewers
-
https://www.notion.so/n8n/David-Langchain-Posthog-notes-7a9294938420403095f4508f1a21d31d
- https://linear.app/n8n/issue/N8N-7070/ux-fixes-batch
- https://linear.app/n8n/issue/N8N-7071/ai-sub-node-bugs


## Review / Merge checklist
- [x] PR title and summary are descriptive. **Remember, the title
automatically goes into the changelog. Use `(no-changelog)` otherwise.**
([conventions](https://github.com/n8n-io/n8n/blob/master/.github/pull_request_title_conventions.md))
- [x] [Docs updated](https://github.com/n8n-io/n8n-docs) or follow-up
ticket created.
- [ ] Tests included.
> A bug is not considered fixed, unless a test is added to prevent it
from happening again. A feature is not complete without tests.
  >
> *(internal)* You can use Slack commands to trigger [e2e
tests](https://www.notion.so/n8n/How-to-use-Test-Instances-d65f49dfc51f441ea44367fb6f67eb0a?pvs=4#a39f9e5ba64a48b58a71d81c837e8227)
or [deploy test
instance](https://www.notion.so/n8n/How-to-use-Test-Instances-d65f49dfc51f441ea44367fb6f67eb0a?pvs=4#f6a177d32bde4b57ae2da0b8e454bfce)
or [deploy early access version on
Cloud](https://www.notion.so/n8n/Cloudbot-3dbe779836004972b7057bc989526998?pvs=4#fef2d36ab02247e1a0f65a74f6fb534e).

---------

Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>
Co-authored-by: Elias Meire <elias@meire.dev>
2023-12-08 13:42:32 +01:00
Iván Ovejero 8cb9c6b3ea
ci: Introduce no-plain-errors lint rule for BE packages (no-changelog) (#7961)
## Summary
Require `ApplicationError` or its child classes instead of plain `Error`
in BE packages. This ensures the error will be normalized when reported
to Sentry, if applicable.

Follow-up to:
https://github.com/n8n-io/n8n/pulls?q=is%3Apr+is%3Aclosed+applicationerror

...

#### How to test the change:
1. ...


## Issues fixed
Include links to Github issue or Community forum post or **Linear
ticket**:
> Important in order to close automatically and provide context to
reviewers

...


## Review / Merge checklist
- [ ] PR title and summary are descriptive. **Remember, the title
automatically goes into the changelog. Use `(no-changelog)` otherwise.**
([conventions](https://github.com/n8n-io/n8n/blob/master/.github/pull_request_title_conventions.md))
- [ ] [Docs updated](https://github.com/n8n-io/n8n-docs) or follow-up
ticket created.
- [ ] Tests included.
> A bug is not considered fixed, unless a test is added to prevent it
from happening again. A feature is not complete without tests.
  >
> *(internal)* You can use Slack commands to trigger [e2e
tests](https://www.notion.so/n8n/How-to-use-Test-Instances-d65f49dfc51f441ea44367fb6f67eb0a?pvs=4#a39f9e5ba64a48b58a71d81c837e8227)
or [deploy test
instance](https://www.notion.so/n8n/How-to-use-Test-Instances-d65f49dfc51f441ea44367fb6f67eb0a?pvs=4#f6a177d32bde4b57ae2da0b8e454bfce)
or [deploy early access version on
Cloud](https://www.notion.so/n8n/Cloudbot-3dbe779836004972b7057bc989526998?pvs=4#fef2d36ab02247e1a0f65a74f6fb534e).
2023-12-08 12:51:49 +01:00
Elias Meire 675ec21d33
feat: Data transformation nodes and actions in Nodes Panel (#7760)
- Split Items List node into separate nodes per action
- Review node descriptions
- New icons
- New sections in subcategories

---------

Co-authored-by: Giulio Andreini <andreini@netseven.it>
Co-authored-by: Deborah <deborah@starfallprojects.co.uk>
Co-authored-by: Michael Kret <michael.k@radency.com>
2023-12-08 11:40:05 +01:00
Iván Ovejero 1d46983b24
refactor: Unify severity and level for all application errors for Sentry (no-changelog) (#7956)
## Summary
Unify `severity` and `level` for all backend application errors for
Sentry

Follow-up to:
https://github.com/n8n-io/n8n/pull/7914#issuecomment-1840433542

...

#### How to test the change:
1. ...


## Issues fixed
Include links to Github issue or Community forum post or **Linear
ticket**:
> Important in order to close automatically and provide context to
reviewers

...


## Review / Merge checklist
- [ ] PR title and summary are descriptive. **Remember, the title
automatically goes into the changelog. Use `(no-changelog)` otherwise.**
([conventions](https://github.com/n8n-io/n8n/blob/master/.github/pull_request_title_conventions.md))
- [ ] [Docs updated](https://github.com/n8n-io/n8n-docs) or follow-up
ticket created.
- [ ] Tests included.
> A bug is not considered fixed, unless a test is added to prevent it
from happening again. A feature is not complete without tests.
  >
> *(internal)* You can use Slack commands to trigger [e2e
tests](https://www.notion.so/n8n/How-to-use-Test-Instances-d65f49dfc51f441ea44367fb6f67eb0a?pvs=4#a39f9e5ba64a48b58a71d81c837e8227)
or [deploy test
instance](https://www.notion.so/n8n/How-to-use-Test-Instances-d65f49dfc51f441ea44367fb6f67eb0a?pvs=4#f6a177d32bde4b57ae2da0b8e454bfce)
or [deploy early access version on
Cloud](https://www.notion.so/n8n/Cloudbot-3dbe779836004972b7057bc989526998?pvs=4#fef2d36ab02247e1a0f65a74f6fb534e).
2023-12-07 16:57:02 +01:00
Iván Ovejero 10ad386604
fix(FileMaker Node): Prevent erroring on zero fields loaded (#7955)
## Summary
https://n8nio.sentry.io/issues/4703111361

...

#### How to test the change:
1. ...


## Issues fixed
Include links to Github issue or Community forum post or **Linear
ticket**:
> Important in order to close automatically and provide context to
reviewers

...


## Review / Merge checklist
- [ ] PR title and summary are descriptive. **Remember, the title
automatically goes into the changelog. Use `(no-changelog)` otherwise.**
([conventions](https://github.com/n8n-io/n8n/blob/master/.github/pull_request_title_conventions.md))
- [ ] [Docs updated](https://github.com/n8n-io/n8n-docs) or follow-up
ticket created.
- [ ] Tests included.
> A bug is not considered fixed, unless a test is added to prevent it
from happening again. A feature is not complete without tests.
  >
> *(internal)* You can use Slack commands to trigger [e2e
tests](https://www.notion.so/n8n/How-to-use-Test-Instances-d65f49dfc51f441ea44367fb6f67eb0a?pvs=4#a39f9e5ba64a48b58a71d81c837e8227)
or [deploy test
instance](https://www.notion.so/n8n/How-to-use-Test-Instances-d65f49dfc51f441ea44367fb6f67eb0a?pvs=4#f6a177d32bde4b57ae2da0b8e454bfce)
or [deploy early access version on
Cloud](https://www.notion.so/n8n/Cloudbot-3dbe779836004972b7057bc989526998?pvs=4#fef2d36ab02247e1a0f65a74f6fb534e).
2023-12-07 16:13:49 +01:00
Iván Ovejero 9b877a9427
fix(Google Sheets Node): Prevent erroring on zero sheet search results (#7957)
## Summary
https://n8nio.sentry.io/issues/4695063783

...

#### How to test the change:
1. ...


## Issues fixed
Include links to Github issue or Community forum post or **Linear
ticket**:
> Important in order to close automatically and provide context to
reviewers

...


## Review / Merge checklist
- [ ] PR title and summary are descriptive. **Remember, the title
automatically goes into the changelog. Use `(no-changelog)` otherwise.**
([conventions](https://github.com/n8n-io/n8n/blob/master/.github/pull_request_title_conventions.md))
- [ ] [Docs updated](https://github.com/n8n-io/n8n-docs) or follow-up
ticket created.
- [ ] Tests included.
> A bug is not considered fixed, unless a test is added to prevent it
from happening again. A feature is not complete without tests.
  >
> *(internal)* You can use Slack commands to trigger [e2e
tests](https://www.notion.so/n8n/How-to-use-Test-Instances-d65f49dfc51f441ea44367fb6f67eb0a?pvs=4#a39f9e5ba64a48b58a71d81c837e8227)
or [deploy test
instance](https://www.notion.so/n8n/How-to-use-Test-Instances-d65f49dfc51f441ea44367fb6f67eb0a?pvs=4#f6a177d32bde4b57ae2da0b8e454bfce)
or [deploy early access version on
Cloud](https://www.notion.so/n8n/Cloudbot-3dbe779836004972b7057bc989526998?pvs=4#fef2d36ab02247e1a0f65a74f6fb534e).
2023-12-07 16:12:07 +01:00
Michael Kret 565b409a82
fix(Webhook Node): Binary data handling (#7804)
Github issue / Community forum post (link here to close automatically):
2023-12-06 17:46:40 +02:00
github-actions[bot] 823b589e09
🚀 Release 1.20.0 (#7940)
#
[1.20.0](https://github.com/n8n-io/n8n/compare/n8n@1.19.0...n8n@1.20.0)
(2023-12-06)


### Bug Fixes

* **AWS DynamoDB Node:** Improve error message parsing
([#7793](https://github.com/n8n-io/n8n/issues/7793))
([5ba5ed8](5ba5ed8e3c))
* **core:** Allow grace period for binary data deletion after manual
execution ([#7889](https://github.com/n8n-io/n8n/issues/7889))
([61d8aeb](61d8aebeaf))
* **core:** Consolidate ownership and sharing data on workflows and
credentials ([#7920](https://github.com/n8n-io/n8n/issues/7920))
([38b88b9](38b88b946b))
* **core:** Fix hard deletes stopping if database query throws
([#7848](https://github.com/n8n-io/n8n/issues/7848))
([46dd4d3](46dd4d3105))
* **core:** Make sure mfa secret and recovery codes are not returned on
login ([#7936](https://github.com/n8n-io/n8n/issues/7936))
([f5502cc](f5502cc628))
* **editor:** Fix deletion of last execution at execution preview
([#7883](https://github.com/n8n-io/n8n/issues/7883))
([ce2d388](ce2d388f05))
* **editor:** Replace isInstanceOwner checks with scopes where
applicable ([#7858](https://github.com/n8n-io/n8n/issues/7858))
([132d691](132d691cbf))
* **Google Sheets Node:** Fix issue with paired items not being set
correctly ([#7862](https://github.com/n8n-io/n8n/issues/7862))
([5207a2f](5207a2fe52))
* **Notion Node:** Fix broken Notion node parameters
([#7864](https://github.com/n8n-io/n8n/issues/7864))
([51d1f5b](51d1f5b820)),
closes [#7791](https://github.com/n8n-io/n8n/issues/7791)


### Features

* **BambooHR Node:** Add support for Only Current on company reports
([#7878](https://github.com/n8n-io/n8n/issues/7878))
([4175801](4175801c90))
* **core:** Allow admin creation
([#7837](https://github.com/n8n-io/n8n/issues/7837))
([476806e](476806ebb0))
* **editor:** Add sections to create node panel
([#7831](https://github.com/n8n-io/n8n/issues/7831))
([39fa8d2](39fa8d21bb))
* **editor:** Open template credential setup from collection
([#7882](https://github.com/n8n-io/n8n/issues/7882))
([627ddb9](627ddb91fb))
* **editor:** Select credentials in template setup if theres only one
([#7879](https://github.com/n8n-io/n8n/issues/7879))
([fe3417a](fe3417a615))


### Performance Improvements

* **editor:** Improve node rendering performance when opening large
workflows ([#7904](https://github.com/n8n-io/n8n/issues/7904))
([a8049a0](a8049a0def))
* **editor:** Improve performance when opening large workflows with node
issues ([#7901](https://github.com/n8n-io/n8n/issues/7901))
([4bd7ae2](4bd7ae29f7))

Co-authored-by: ivov <ivov@users.noreply.github.com>
2023-12-06 12:26:24 +01:00
Jon 4175801c90
feat(BambooHR Node): Add support for Only Current on company reports (#7878)
Github issue / Community forum post (link here to close automatically):
https://github.com/n8n-io/n8n/issues/7876

API Docs for reference:
https://documentation.bamboohr.com/reference/get-company-report-1
2023-12-05 10:34:28 +00:00
Iván Ovejero e77fd5d286
refactor: Switch plain errors in nodes-base to ApplicationError (no-changelog) (#7914)
Ensure all errors in `nodes-base` are `ApplicationError` or children of
it and contain no variables in the message, to continue normalizing all
the backend errors we report to Sentry. Also, skip reporting to Sentry
errors from user input and from external APIs. In future we should
refine `ApplicationError` to more specific errors.

Follow-up to: [#7877](https://github.com/n8n-io/n8n/pull/7877)

- [x] Test workflows:
https://github.com/n8n-io/n8n/actions/runs/7084627970
- [x] e2e: https://github.com/n8n-io/n8n/actions/runs/7084936861

---------

Co-authored-by: Michael Kret <michael.k@radency.com>
2023-12-05 11:17:08 +01:00
Deborah 485a0c73cb
docs: Fix typo in tooltip relating to JMESPath (#7910) 2023-12-04 08:19:36 +00:00
Michael Kret ade3acf800
fix(Google Sheets Node): Missing version fo RMC (no-changelog) (#7886)
Github issue / Community forum post (link here to close automatically):
2023-11-30 17:24:43 +02:00
Iván Ovejero e0b7f89035
refactor(core): Separate API response from error in execution error causes (no-changelog) (#7880)
Store the third-party API response error separately from the error
stored as `cause`

Follow-up to:
https://github.com/n8n-io/n8n/pull/7820#discussion_r1406009154
2023-11-30 14:44:10 +01:00
Jon 5207a2fe52
fix(Google Sheets Node): Fix issue with paired items not being set correctly (#7862)
https://community.n8n.io/t/error-unknown-top-level-item-key-paireditems-item-0/33536/

Co-authored-by: Michael Kret <michael.k@radency.com>
2023-11-29 14:12:50 +00:00
oleg 51d1f5b820
fix(Notion Node): Fix broken Notion node parameters (#7864)
We've introduced a new version(`2.1` of Notion node in #7791 but not all
`diplayOptions` conditions were updated. This would effectively prevent
most of the required Notion fields from loading.
This PR adds the new version to all `@version` display conditions which
contain version `2`.


https://github.com/n8n-io/n8n/assets/12657221/4254c646-43b6-46b3-adcc-1b17746901da


Github issue / Community forum post (link here to close automatically):

---------

Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>
Co-authored-by: Michael Kret <michael.k@radency.com>
2023-11-29 15:11:54 +01:00
कारतोफ्फेलस्क्रिप्ट™ 6d9342e676 Merge tag 'n8n@1.19.0' 2023-11-29 14:12:24 +01:00
Marcus 5ba5ed8e3c
fix(AWS DynamoDB Node): Improve error message parsing (#7793)
Github issue / Community forum post (link here to close automatically):
2023-11-29 13:44:13 +01:00
github-actions[bot] 303cf31331
🚀 Release 1.19.0 (#7863)
#
[1.19.0](https://github.com/n8n-io/n8n/compare/n8n@1.18.0...n8n@1.19.0)
(2023-11-29)


### Bug Fixes

* **core:** Ensure member and admin cannot be promoted to owner
([#7830](https://github.com/n8n-io/n8n/issues/7830))
([9b87a59](9b87a596ca)),
closes
[/linear.app/n8n/issue/PAY-985/add-user-role-modification-endpoint#comment-62355f6](https://github.com//linear.app/n8n/issue/PAY-985/add-user-role-modification-endpoint/issues/comment-62355f6)
* **core:** Prevent error messages due to statistics about data loading
([#7824](https://github.com/n8n-io/n8n/issues/7824))
([847f6ac](847f6ac771))
* **core:** Tighten checks for multi-main setup usage
([#7788](https://github.com/n8n-io/n8n/issues/7788))
([fdb2c18](fdb2c18ecc))
* **core:** Use AbortController to notify nodes to abort execution
([#6141](https://github.com/n8n-io/n8n/issues/6141))
([d2c18c5](d2c18c5727))
* **editor:** Add telemetry to workflow history
([#7811](https://github.com/n8n-io/n8n/issues/7811))
([d497041](d4970410e1))
* **editor:** Allow owners and admins to share workflows and credentials
they don't own ([#7833](https://github.com/n8n-io/n8n/issues/7833))
([3ab3ec9](3ab3ec9da8))
* **editor:** Disable context menu actions in read-only mode
([#7789](https://github.com/n8n-io/n8n/issues/7789))
([902beff](902beffce5))
* **editor:** Fix cloud plan data loading on instance
([#7841](https://github.com/n8n-io/n8n/issues/7841))
([8b99384](8b99384367))
* **editor:** Fix credential icon for old node type version
([#7843](https://github.com/n8n-io/n8n/issues/7843))
([4074107](4074107511))
* **editor:** Fix icon for unknown node type
([#7842](https://github.com/n8n-io/n8n/issues/7842))
([28ac5a7](28ac5a750e))
* **editor:** Fix mouse position in workflow previews
([#7853](https://github.com/n8n-io/n8n/issues/7853))
([c063398](c0633987bf))
* **editor:** Show nice error when environment is not set up
([#7778](https://github.com/n8n-io/n8n/issues/7778))
([5835e05](5835e055d3))
* **editor:** Suppress dev server websocket messages in workflow view
([#7808](https://github.com/n8n-io/n8n/issues/7808))
([685ffd7](685ffd7413))
* **Google Sheets Node:** Read operation execute for each item
([#7800](https://github.com/n8n-io/n8n/issues/7800))
([d548872](d5488725a8))
* **HTTP Request Node:** Enable expressions for binary input data fields
([#7782](https://github.com/n8n-io/n8n/issues/7782))
([6208af0](6208af07eb))
* **Microsoft SQL Node:** Prevent double escaping table name
([#7801](https://github.com/n8n-io/n8n/issues/7801))
([73ec753](73ec7533ce))


### Features

* Add AI tool building capabilities
([#7336](https://github.com/n8n-io/n8n/issues/7336))
([87def60](87def60979))
* Add initial scope checks via decorators
([#7737](https://github.com/n8n-io/n8n/issues/7737))
([a37f1cb](a37f1cb0ba))
* Ado 1296 spike credential setup in templates
([#7786](https://github.com/n8n-io/n8n/issues/7786))
([aae45b0](aae45b043b))
* **core:** Add Support for custom CORS origins for webhooks
([#7455](https://github.com/n8n-io/n8n/issues/7455))
([99a9ea4](99a9ea497a))
* **core:** Allow user role modification
([#7797](https://github.com/n8n-io/n8n/issues/7797))
([7a86d36](7a86d36068))
* **core:** Set up endpoint for all existing roles with license flag
([#7834](https://github.com/n8n-io/n8n/issues/7834))
([2356fb0](2356fb0f0c))
* **editor:** Add node name and version to NDV node settings
([#7731](https://github.com/n8n-io/n8n/issues/7731))
([da85198](da851986f6))
* **editor:** Add routing middleware, permission checks, RBAC store,
RBAC component ([#7702](https://github.com/n8n-io/n8n/issues/7702))
([67a8891](67a88914f2))
* **editor:** Replace middleware for Role checks with Scope checks
([#7847](https://github.com/n8n-io/n8n/issues/7847))
([72852a6](72852a60eb))
* **editor:** Show avatars for users currently working on the same
workflow ([#7763](https://github.com/n8n-io/n8n/issues/7763))
([77bc8ec](77bc8ecd4b))
* **Notion Node:** Option to simplify output in getChildBlocks operation
([#7791](https://github.com/n8n-io/n8n/issues/7791))
([d667bca](d667bca658))
* **Slack Node:** Add support for getting the profile of a user
([#7829](https://github.com/n8n-io/n8n/issues/7829))
([90bb6ba](90bb6ba417))

Co-authored-by: ivov <ivov@users.noreply.github.com>
2023-11-29 13:17:03 +01:00
Michael Kret c72229fbe2
fix(core): Rename ’Marketing & Content' category to 'Marketing' (no-changelog) (#7823)
Github issue / Community forum post (link here to close automatically):
2023-11-29 13:37:46 +02:00
Jan Oberhauser 87def60979
feat: Add AI tool building capabilities (#7336)
Github issue / Community forum post (link here to close automatically):
https://community.n8n.io/t/langchain-memory-chat/23733

---------

Signed-off-by: Oleg Ivaniv <me@olegivaniv.com>
Co-authored-by: Oleg Ivaniv <me@olegivaniv.com>
Co-authored-by: Val <68596159+valya@users.noreply.github.com>
Co-authored-by: Alex Grozav <alex@grozav.com>
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
Co-authored-by: Deborah <deborah@starfallprojects.co.uk>
Co-authored-by: Jesper Bylund <mail@jesperbylund.com>
Co-authored-by: Jon <jonathan.bennetts@gmail.com>
Co-authored-by: Michael Kret <88898367+michael-radency@users.noreply.github.com>
Co-authored-by: Giulio Andreini <andreini@netseven.it>
Co-authored-by: Mason Geloso <Mason.geloso@gmail.com>
Co-authored-by: Mason Geloso <hone@Masons-Mac-mini.local>
Co-authored-by: Mutasem Aldmour <mutasem@n8n.io>
2023-11-29 12:13:55 +01:00
Jon 90bb6ba417
feat(Slack Node): Add support for getting the profile of a user (#7829)
Github issue / Community forum post (link here to close automatically):
https://github.com/n8n-io/n8n/issues/7825

This adds support for getting a users profile which returns different
data to the existing user info (Get) operation we have.

Test Workflow
```
{
  "meta": {
    "instanceId": "8c8c5237b8e37b006a7adce87f4369350c58e41f3ca9de16196d3197f69eabcd"
  },
  "nodes": [
    {
      "parameters": {},
      "id": "69f437fb-9962-4d51-91bb-0ef4b3827e49",
      "name": "When clicking \"Execute Workflow\"",
      "type": "n8n-nodes-base.manualTrigger",
      "typeVersion": 1,
      "position": [
        880,
        380
      ]
    },
    {
      "parameters": {
        "resource": "user",
        "user": {
          "__rl": true,
          "value": "U035F563JSW",
          "mode": "list",
          "cachedResultName": "jonathan"
        }
      },
      "id": "826828db-598b-40c7-b085-5b01f2c10d73",
      "name": "Get Info",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.1,
      "position": [
        1120,
        260
      ],
      "credentials": {
        "slackApi": {
          "id": "E4DnXIyNuRxi5GSz",
          "name": "Slack account"
        }
      }
    },
    {
      "parameters": {
        "resource": "user",
        "operation": "getProfile",
        "user": {
          "__rl": true,
          "value": "U035F563JSW",
          "mode": "list",
          "cachedResultName": "jonathan"
        }
      },
      "id": "9de02c3f-e17c-4a32-a64e-11aaa0b36120",
      "name": "Get Profile",
      "type": "n8n-nodes-base.slack",
      "typeVersion": 2.1,
      "position": [
        1120,
        440
      ],
      "credentials": {
        "slackApi": {
          "id": "E4DnXIyNuRxi5GSz",
          "name": "Slack account"
        }
      }
    }
  ],
  "connections": {
    "When clicking \"Execute Workflow\"": {
      "main": [
        [
          {
            "node": "Get Info",
            "type": "main",
            "index": 0
          },
          {
            "node": "Get Profile",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "pinData": {}
}
```
2023-11-29 08:37:18 +00:00
कारतोफ्फेलस्क्रिप्ट™ 117962d473
feat(core): Update LLM applications building support (no-changelog) (#7710)
extracted out of #7336

---------

Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
Co-authored-by: Oleg Ivaniv <me@olegivaniv.com>
Co-authored-by: Alex Grozav <alex@grozav.com>
2023-11-28 16:47:28 +01:00