* fix: Prevent unnecessary error messages also for data loaded flag
* refactor: Search if data has been loaded before trying to save and fire other events
* fix broken test
* fix lint issue
* remove unnecesary Db re-initialization
this is from before we added `Db.init` in `WorkflowRunnerProcess`
* feat(core): Improved health check
* make health check not care about DB connections
* close DB connections, and shutdown the timer
* refactor: Add deprecation notice for MySQL and MariaDB
* Update packages/cli/src/commands/BaseCommand.ts
Co-authored-by: Cornelius Suermann <cornelius@n8n.io>
---------
Co-authored-by: Cornelius Suermann <cornelius@n8n.io>
* test: Add /setup intercept for `skipSetup` command (no-changelog)
* Drop all tables for e2e reset, intercept account setup request
* Fix linting issues
* Allow to skip setup account request intercept and linting fixes
* Make sure variables are loaded
* Use PATCH for enabling of e2e features
* Do not exclude migration table from truncation
* Add user sign-up intercept
* 🔧 Adjust base ESLint config
* 🔧 Adjust `lint` and `lintfix` in `nodes-base`
* 🔧 Include `test` and `utils` in `nodes-base`
* 📘 Convert JS tests to TS
* 👕 Apply lintfixes
add Base URL to redirects in acsHandler
I modified the redirections to include the base URL of the instance so that the redirects remain correct even if the instance is accessed from a subdirectory.
Co-authored-by: Michael Auerswald <michael.auerswald@gmail.com>
* Add userActivated migration
* Fix migration logic
* Remove duplication when retrieving the activated users
* Fix bug updating settings in mysql
* Make userSettings type conform with naming convention
* Disable naming convention rule only in IDatabaseCollections interface
* Fix down method in Postgres migration
* Reset '{}' to NULL when reversing migration
* ⚡ Add user activation survey
* Fix typo
* Avoid showing the modal when there is a modal view
* Allow to redirect to specific execution
* Improve structure
* Handle errors when sharing feedback
* update withFeatureFlag function
* Fix linting issue
* Set user activation flag on workflowExecutionCompleted event
* Revert update user settings functionality
* Remove unnecessary changes
* fix linting issue
* account for new functionality in tests
* Small improvements
* keep once instace of the model open between tabs
* Add sorting to GET /executions
* type parameters for GET /executions
a
* Add constant for local store key
* Add execution mode filtering
* fix linting issue
* Do not override settings when setting isOnboarded true
* Add update user settings endpoint
* improvements
* revert changes to /GET executions
* Fix typo
* Add userActivated flag to user store
* Add E2E test
* Fix linting issue
* Update pnpm-lock
* Revert unnecessary change
* Centralize user's settings update
* Remove unused ref in userActivationSurvey modal
* Use aliased imports
* Use createEventBus function in component
* Fix tests
If you install a community node with `polling: true`, activating a workflow with that node fails with an error: `WorkflowActivationError: There was a problem activating the workflow: "Could not get parameter "pollTimes"!"`.
You can test this by installing `n8n-nodes-rss-feed-trigger`, creating a workflow with the `RSS Trigger` node, and then trying to activate it. Activation will fail on `master`, but work as expected on this branch.
* wip: workflow execution filtering
* fix: import type failing to build
* fix: remove console.logs
* feat: execution metadata migrations
* fix(editor): Move global executions filter to its own component
* fix(editor): Using the same filter component in workflow level
* fix(editor): a small housekeeping
* checking workflowId in filter applied
* fix(editor): update filter after resolving merge conflicts
* fix(editor): unify empy filter status
* feat(editor): add datetime picker to filter
* feat(editor): add meta fields
* fix: fix button override in datepicker panel
* feat(editor): add filter metadata
* feat(core): add 'startedBefore' execution filter prop
* feat(core): add 'tags' execution query filter
* Revert "feat(core): add 'tags' execution query filter"
This reverts commit a7b968081c.
* feat(editor): add translations and tooltip and counting selected filter props
* fix(editor): fix label layouts
* fix(editor): update custom data docs link
* fix(editor): update custom data tooltip position
* fix(editor): update tooltip text
* refactor: Ignore metadata if not enabled by license
* fix(editor): Add paywall states to advanced execution filter
* refactor: Save custom data also for worker mode
* fix: Remove duplicate migration name from list
* fix(editor): Reducing filter complexity and add debounce to text inputs
* fix(editor): Remove unused import, add comment
* fix(editor): simplify event listener
* fix: Prevent error when there are running executions
* test(editor): Add advanced execution filter basic unit test
* test(editor): Add advanced execution filter state change unit test
* fix: Small lint issue
* feat: Add indices to speed up queries
* feat: add customData limits
* refactor: put metadata save in transaction
* chore: remove unneed comment
* test: add tests for execution metadata
* fix(editor): Fixes after merge conflict
* fix(editor): Remove unused import
* wordings and ui fixes
* fix(editor): type fixes
* feat: add code node autocompletions for customData
* fix: Prevent transaction issues and ambiguous ID in sql clauses
* fix(editor): Suppress requesting current executions if metadata is used in filter (#5739)
* fix(editor): Suppress requesting current executions if metadata is used in filter
* fix(editor): Fix arrows for select in popover
* refactor: Improve performance by correcting database indices
* fix: Lint issue
* test: Fix broken test
* fix: Broken test
* test: add call data check for saveExecutionMetadata test
---------
Co-authored-by: Valya Bullions <valya@n8n.io>
Co-authored-by: Alex Grozav <alex@grozav.com>
Co-authored-by: Omar Ajoue <krynble@gmail.com>
Co-authored-by: Romain Minaud <romain.minaud@gmail.com>
* fix calling error workflows in main mode recovery
* cleanup
* remove WorkflowExecuteAdditionalData export from index
* revert refactor to fix test
* Update index.ts
---------
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <netroy@users.noreply.github.com>
* fix(editor): Fix execution list item selection
* fix(editor): Delete only selected executions
* fix(editor): Fix clear selection
* fix(editor): Fix clear selection
* fix(editor): Fix clear selection
* feat(editor): Add select all existing executions checkbox
* fix(editor): Do not mark later loaded executions selected
* test(editor): Add execution list unit test
* fix(editor): Fix selection
* test(editor): update execution selection test
* fix(editor): Handle UI state when there is no execution
* fix(editor): Remove unnecessary logic
* test(editor): Add more execution list unit tests and fake data generation
* test(editor): Add more execution list unit tests
* test(editor): Simplifying test setup
* chore: update pnpm lock after resolving merge conflocts
* chore: fix package version
* fix: Improved executions deletion to prevent crashing and fixed removal of failed executions
* fix: Add comment to clarify why change was needed
* fix: fix executions list bug when selecting all and changing filter
* fix: fix execution lists running execution showing up on different workflow id
* fix(editor): Deleting an execution while all are selected
* fix(editor): Deleting an execution while all are selected
---------
Co-authored-by: Omar Ajoue <krynble@gmail.com>
Co-authored-by: Alex Grozav <alex@grozav.com>
* use typedi for UserManagementMailer
* use typedi for SamlService
* fix typos
* use typedi for Queue
* use typedi for License
* convert some more code to use typedi
* move nodeTypes api to a controller class
* move tags api to a controller class
* move LDAP routes to a controller class
* move nodes routes to a controller class
* WIP: Cypress parallel CI run test
* Trigger action on branch push
* Change build artifacts path
* Make sure to checkout the repo for testing job
* Use Cypress action for installing
* Lock cypress action userd version
* Skip node install step since we're using cypress node16 container
* Let Cypress handle pnpm install
* Use setup-node action for caching pnpm
* Set CYPRESS_CACHE_FOLDER
* Set CYPRESS_CACHE_FOLDER
* Manually cache pnpm store
* Dont fix pnpm version
* Use caching action also in testing job
* Zip packages dist before uploading the artifacts and change caching key
* Use absolute build paths for zipping job
* Use zip command in action
* Use tar for zipping packages
* Debuggin directory ls
* Debugging caching of modules
* Attempt to fix permissions issue
* Porivde Cypress executable via `CYPRESS_RUN_BINARY`
* Cache /github/home
* Adjust caching keys
* Debug: search for cypress exec
* Debugging: List dirs
* Use pnpm install action to install node_modules
* Do not log /home/runner
* Use node_modules/.bin Cypress binary
* Use absolute path to nodue modules
* Run Cypress via custom command
* Try with patched cypress action
* Revert logging
* Manually specify cypress config file
* Use absolute paths
* Fix cypress config name
* Debug print cypress config
* Remove debugging, increase to 4 containers
* Increase amount of containers
* Add env-version matrix
* Replace node14 with node18 in testing matrix
* Remove debugging and add node 14
* Use just node14
* Use cypress:base and remove browser req
* Give more general timeouts
* Try with node16
* Change cache directive position
* Replace zip artifact upload with cache
* Cache full packages not just dist
* Test with variable inputs
* Add commit info message
* Remove wrongly commited code
* Allow WF API dispatch
* Try Chrome browser again for comparison
* Include Monaco in the build
* Make e2e workflow re-usable
* Comment out invalid reusable workflow args
* Use electron and add node 14 run
* Fix env arg
* Provide custom ci-build-id
* Refactor remaining e2e workflow to use reusable action
* Remove single matrix directive
* Refactor ci-pull-req
* Make lint job dependant on test jobs
* Disable debugging job
* Make containers dynamic
* Cleanup & install git for linting action
* Use regular buntu image for PR linting
* Debugging failing tests
* Remove fixed spec name
* Debug e2e env var
* Do not use realkeypress which crashes electron runner
* Debugging
* chore: remove console
* chore: remove console
* test: remove node 14 tests
* test: replace test branch with master
* test: use tests in current branch
* test: use relative path
* chore: clean up
* test: only trigger on approval
* ci: update test PR
* ci: use curr branch
* ci: only run 14 on schedule, not for slack command
* ci: only run test on approval
* ci: clean up branch, rename step
* ci: rename steps
* ci: clean up cancel
* ci: clean up env var
* ci: set var
* ci: use chromef
* ci: use electron
* chore: add console log
* chore: add console log
* ci: update to string
* ci: set all env options
* test: build
* ci: fix step issue
* Fix failing tests & upgrade to Cypress 12
* Allow WF dispatch of e2e reusable
* Fix wrong naming in e2e-tests workflow
* Redeploy
* Fix tests
* Fix NDV tests and remove skipping of webhooks execution tests
* Fix clipboard read command
* Fix execution failing tests
* Reset before each 15 and 3
* Fix flaky tests
* Cleanup and log envs
* Test fixes
* Default owner spec fixes
* Get rid of CYPRESS_RUN_ENV
* Increase amount of containers, cleanup and add mock for credentials test call
* Cleanup & fix PR tests unit tests
* Wait for WF to loade in sharing spec
* Do linting and unit tests first
* Use frozen lockfile
* Revert back ci pull request jobs order
* Refine credential input selector and move cy.waitForLoad to correct position in 15-scheduler spec
* test: build
* Wait for WF execution instead of arbitraty timeout in WF execution spec, change order of jobs for ci pull request
* Fix flaky 3-default owner spec and wait for execution list to load in 20-workflow-executions
* Use setup node action
* Remove caching for lint/unit tests
* Experiment with parallel test & lint on ci
* Provide cache key dynamically
* Run e2e in parallel on pr
* Only run node14 e2e on daily schedule
* Make sure to generate generate new ci-build-id on re-runs
* Remove debugging prints
* Address PR comments
* Rename custom onBeforeUnload handler
* Make sure 19-execution spec waits for wf to load properly before import fixtures
---------
Co-authored-by: Mutasem <mutdmour@gmail.com>
* fix(core): Execution pruning should delete query should use the `OR` operator
* fix(core): Prune executions in a chunk to avoid sqlite error "Expression tree is too large"
* reduce the memory usage during execution pruning
* fix(core): Execution pruning should delete query should use the `OR` operator
* fix(core): Prune executions in a chunk to avoid sqlite error "Expression tree is too large"
* reduce the memory usage during execution pruning
* add typedi
* convert ActiveWorkflowRunner into an injectable service
* convert ExternalHooks into an injectable service
* convert InternalHooks into an injectable service
* convert LoadNodesAndCredentials into an injectable service
* convert NodeTypes and CredentialTypes into an injectable service
* convert ActiveExecutions into an injectable service
* convert WaitTracker into an injectable service
* convert Push into an injectable service
* convert ActiveWebhooks and TestWebhooks into an injectable services
* handle circular references, and log errors when a circular dependency is found
* 🚀 Release 0.216.1
* fix(core): Do not allow arbitrary path traversal in the credential-translation endpoint (#5522)
* fix(core): Do not allow arbitrary path traversal in BinaryDataManager (#5523)
* fix(core): User update endpoint should only allow updating email, firstName, and lastName (#5526)
* fix(core): Do not explicitly bypass auth on urls containing `.svg` (#5525)
* 📚 Update CHANGELOG.md
---------
Co-authored-by: janober <janober@users.noreply.github.com>
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <netroy@users.noreply.github.com>
Co-authored-by: Jan Oberhauser <jan.oberhauser@gmail.com>
* feat(editor): roll out schema view
* feat(editor): add posthog tracking
* refactor: use composables
* refactor: clean up console log
* refactor: clean up impl
* chore: clean up impl
* fix: fix demo var
* chore: add comment
* refactor: clean up
* chore: wrap error func
* refactor: clean up import
* refactor: make store
* feat: enable rudderstack usebeacon, move event to unload
* chore: clean up alert
* refactor: move tracking from hooks
* fix: reload flags on login
* fix: add func to setup
* fix: clear duplicate import
* chore: add console to tesT
* chore: add console to tesT
* fix: try reload
* chore: randomize instnace id for testing
* chore: randomize instnace id for testing
* chore: add console logs for testing
* chore: move random id to fe
* chore: use query param for testing
* feat: update PostHog api endpoint
* feat: update rs host
* feat: update rs host
* feat: update rs endpoints
* refactor: use api host for BE events as well
* refactor: refactor out posthog client
* feat: add feature flags to login
* feat: add feature flags to login
* feat: get feature flags to work
* feat: add created at to be events
* chore: add todos
* chore: clean up store
* chore: add created at to identify
* feat: add posthog config to settings
* feat: add bootstrapping
* chore: clean up
* chore: fix build
* fix: get dates to work
* fix: get posthog to recognize dates
* chore: refactor
* fix: update back to number
* fix: update key
* fix: get experiment evals to work
* feat: add posthog to signup router
* feat: add feature flags on sign up
* chore: clean up
* fix: fix import
* chore: clean up loading script
* feat: add timeout, fix: script loader
* fix: test timeout and get working on 8080
* refactor: move out posthog
* feat: add experiment tracking
* fix: clear tracked on reset
* fix: fix signup bug
* fix: handle errors when telmetry is disabled
* refactor: remove redundant await
* fix: add back posthog to telemetry
* test: fix test
* test: fix test
* test: add tests for posthog client
* lint: fix
* fix: fix issue with slow decide endpoint
* lint: fix
* lint: fix
* lint: fix
* lint: fix
* chore: address PR feedback
* chore: address PR feedback
* feat: add onboarding experiment
* Prune execution data when more than cofnfigured limit
* use stricter typings
* use `pruneDataMaxCount`
---------
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
* adds ExecutionEvents view modal to ExecutionList
* fix time rendering and remove wf column
* checks for unfinished executions and fails them
* prevent re-setting stoppedAt for execution
* some cleanup / manually create rundata after crash
* quicksave
* remove Threads lib, log worker rewrite
* cleanup comment
* fix sentry destination return value
* test for tests...
* run tests with single worker
* fix tests
* remove console log
* add endpoint for execution data recovery
* lint cleanup and some refactoring
* fix accidental recursion
* remove cyclic imports
* add rundata recovery to Workflowrunner
* remove comments
* cleanup and refactor
* adds a status field to executions
* setExecutionStatus on queued worker
* fix onWorkflowPostExecute
* set waiting from worker
* get crashed status into frontend
* remove comment
* merge fix
* cleanup
* catch empty rundata in recovery
* refactor IExecutionsSummary and inject nodeExecution Errors
* reduce default event log size to 10mb from 100mb
* add per node execution status
* lint fix
* merge and lint fix
* phrasing change
* improve preview rendering and messaging
* remove debug
* Improve partial rundata recovery
* fix labels
* fix line through
* send manual rundata to ui at crash
* some type and msg push fixes
* improve recovered item rendering in preview
* update workflowStatistics on recover
* merge fix
* review fixes
* merge fix
* notify eventbus when ui is back up
* add a small timeout to make sure the UI is back up
* increase reconnect timeout to 30s
* adjust recover timeout and ui connection lost msg
* do not stop execution in editor after x reconnects
* add executionRecovered push event
* fix recovered connection not green
* remove reconnect toast and merge existing rundata
* merge editor and recovered data for own mode
* feat: update PostHog api endpoint
* feat: update rs host
* feat: update rs host
* feat: update rs endpoints
* refactor: use api host for BE events as well
This fixes the following issues:
* After a community node is installed, we were not calling `postProcessLoaders`, which was causing a bunch of unexpected behaviors, and sometimes even crashes. This was only happening in the session where the package was installed. After a crash, the restarted service was working without these issues.
* After a community node is installed, the icon for the nodes and credentials were missing in the UI, as we were creating one icons route per installed package at startup, and this did not handle newly installed packages. restarting the service fixes this issue as well.
Fixes https://community.n8n.io/t/showing-weird-count-on-community-nodes/23035
* Remove check by safe list to skip list
* add an option to skip using statistics events
---------
Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
* fix(editor): Prevent creation of input connections for nodes without input
* WIP: Workflow checks service and controller
* fix: Created SQLite migration to remove broken connections
* Cleanup & add mysql/posgres migrations
* Linter fixes
* Unify the migration scripts
* Escape migration workflow_entity
* Wrap the migration in try/catch and do not parse nodes and connection if mysql/postgres
* Do migration changes also fro mysql
* refactor: Wrap only the necessary call in try catch block
---------
Co-authored-by: Omar Ajoue <krynble@gmail.com>
* fix(editor): Prevent creation of input connections for nodes without input
* WIP: Workflow checks service and controller
* fix: Created SQLite migration to remove broken connections
* Cleanup & add mysql/posgres migrations
* Linter fixes
* Unify the migration scripts
* Escape migration workflow_entity
* Wrap the migration in try/catch and do not parse nodes and connection if mysql/postgres
* Do migration changes also fro mysql
* refactor: Wrap only the necessary call in try catch block
---------
Co-authored-by: Omar Ajoue <krynble@gmail.com>
* refactor: Hide prompt for desktop
* feat: add email field to personalization modal
* fix: update survey interfaces
* chore: enable personalization survey email key display condition
* feat: add users page upsell for desktop client
* feat: disable UM on desktop where possible
* refactor: Have a single function to decide whether UM is enabled
* feat: update community nodes upsell link
---------
Co-authored-by: Alex Grozav <alex@grozav.com>
Co-authored-by: krynble <omar@n8n.io>
Co-authored-by: freyamade <freya@n8n.io>
`PRAGMA foreign_keys` is [a no-op within a sqlite transaction](https://www.sqlite.org/pragma.html#pragma_foreign_keys).
This causes cascade deletes to happen when we create a new user table, and drop the old user table.
* feat(core): Fix populating of node custom api call options
* lint fixes
* Adress PR comments
* Add e2e test and only inject custom API options for latest version
* Make sure to injectCustomApiCallOption for the latest version of node
* feat(cli): Move apiCallOption injection to LoadNodesAndCredentials and add e2e tests to check for custom nodes credentials
* Load nodes and credentials fixtures from a single place
* Console warning if credential is invalid during customApiOptions injection
* 🔨 - Remove `shared` key from execution save data
* 👕 - Using import type where needed
* remove console.log
* 🔨 - Create new clean workflowData instead of removing shared
If IWorkflowBase changes in future, TS will error out here ensuring it's kept up to date
* 🔨 - use lodash.pick for less verbosity
* 🔨 - fix lodash imports
* feat(core): Fix populating of node custom api call options
* lint fixes
* Adress PR comments
* Add e2e test and only inject custom API options for latest version
* Make sure to injectCustomApiCallOption for the latest version of node
* 🔨 - Use .spyOn for UserManagment
* 🔨 - Remove a no longer needed test
* 🔨 - Refactored and cleaned up workflowstats tests
* 🔨 - Clean up unused imports / lines
* create prometheus metrics from events
* feat(core): Add more Prometheus metrics (experimental) (#5187)
* refactor(core): Add Prometheus labels to relevant metrics
* feat(core): Add more Prometheus metrics (experimental)
* add 'v' prefix to value of version label
Co-authored-by: Cornelius Suermann <cornelius@n8n.io>
* always each DB migrations in a transaction
* `VACUUM` isn't allowed inside transactions.
* `PRAGMA foreign_keys` are automatically toggled before and after every down migration
* adds ExecutionEvents view modal to ExecutionList
* fix time rendering and remove wf column
* checks for unfinished executions and fails them
* prevent re-setting stoppedAt for execution
* removing UI changes but keeping eventbus fixes
* remove comment
* refactor(core): Add more overloads for string-type node parameter (no-changelog)
continued from https://github.com/n8n-io/n8n/pull/4797
* include binaryPropertyOutput
* fix: Stop OOM crashed in Execution Data pruning
Currently while pruning execution data, we are loading all the data in memory. For instances where there are thousands of executions, this causes the container to run out of memory.
Since ids is all we need, we should only query for ids.
* query for Executions only when ids are actually needed for pruning binary data
in default mode the binary data is in the database, and will get pruned along with the executions.