v0.15.0

netbirdio/netbirdv0.15.0Aug 8, 2025by farukaydin

AI Summary

A major update focusing on architectural refactoring of workers and queues, alongside significant UX improvements through inline error messages and new flow management tools.

Key Highlights

  • Refactored workers and queues to eliminate redundant process listeners
  • Introduced inline error messages across multiple forms
  • Implemented flow import and export functionality
  • Added support for new apps: Freescout, Signalwire, and Anthropic
  • Renamed database table and models for OAuth/SAML

Breaking Changes

  • Removed lerna and yarn workspaces
  • Renamed database table 'saml_auth_providers_role_mappings' to 'role_mappings'
  • Renamed AppAuthClient model to OAuthClient

New Features

  • Inline error messages for ForgotPassword, ResetPassword, and User forms
  • Flow import and export API and UI
  • Folder model creation
  • New scheduler trigger (every N minutes)
  • Freescout app integration
  • Signalwire receive call integration
  • Anthropic app integration

Full Release Notes

## What's Changed
* Remove lerna and yarn workspaces by @farukaydin in https://github.com/automatisch/automatisch/pull/2212
* test(user): write test for softRemove by @barinali in https://github.com/automatisch/automatisch/pull/2184
* test(user): write test for sendResetPasswordEmail by @barinali in https://github.com/automatisch/automatisch/pull/2185
* test(user): write test cases for isResetPasswordTokenValid by @barinali in https://github.com/automatisch/automatisch/pull/2187
* fix(devcontainer): remove yarn workspaces by @barinali in https://github.com/automatisch/automatisch/pull/2222
* test(user): write test for sendInvitationEmail by @barinali in https://github.com/automatisch/automatisch/pull/2188
* test(user): write tests for isInvitationTokenValid by @barinali in https://github.com/automatisch/automatisch/pull/2197
* test(user): write tests for generateHash by @barinali in https://github.com/automatisch/automatisch/pull/2198
* test(user): write test for startTrialPeriod by @barinali in https://github.com/automatisch/automatisch/pull/2199
* test(user): write tests for isAllowedToRunFlows by @barinali in https://github.com/automatisch/automatisch/pull/2200
* feat: introduce inline error messages for ForgotPassword and ResetPasswordForm by @kattoczko in https://github.com/automatisch/automatisch/pull/2223
* test(user): write tests for inTrial by @barinali in https://github.com/automatisch/automatisch/pull/2203
* test(user): write tests for hasActiveSubscription by @barinali in https://github.com/automatisch/automatisch/pull/2204
* test(user): write tests for withinLimits by @barinali in https://github.com/automatisch/automatisch/pull/2205
* test(user): write tests for getPlanAndUsage by @barinali in https://github.com/automatisch/automatisch/pull/2213
* test(user): write tests for getInvoices by @barinali in https://github.com/automatisch/automatisch/pull/2214
* test(user): write test for createAdmin by @barinali in https://github.com/automatisch/automatisch/pull/2215
* chore: Do not run e2e tests in pull requests by @farukaydin in https://github.com/automatisch/automatisch/pull/2229
* test(user): write tests for registerUser by @barinali in https://github.com/automatisch/automatisch/pull/2216
* test(user): write tests for ability and can by @barinali in https://github.com/automatisch/automatisch/pull/2217
* test(user): write tests for $beforeInsert and $beforeUpdate by @barinali in https://github.com/automatisch/automatisch/pull/2219
* test(user): write tests for $afterInsert and $afterFind by @barinali in https://github.com/automatisch/automatisch/pull/2220
* chore: add test coverage by @barinali in https://github.com/automatisch/automatisch/pull/2224
* chore(migrations): rename saml_auth_providers_role_mappings table as role_mappings by @barinali in https://github.com/automatisch/automatisch/pull/2231
* SamlAuthProvider model tests by @farukaydin in https://github.com/automatisch/automatisch/pull/2234
* refactor: Reorder user model tests by @farukaydin in https://github.com/automatisch/automatisch/pull/2235
* test(user): use relative future dates by @barinali in https://github.com/automatisch/automatisch/pull/2239
* Fix failing API endpoint tests by @farukaydin in https://github.com/automatisch/automatisch/pull/2243
* refactor: Workers and queues and eliminate redundant process listeners by @farukaydin in https://github.com/automatisch/automatisch/pull/2238
* refactor: Abstract queue generation and configuration by @farukaydin in https://github.com/automatisch/automatisch/pull/2246
* feat: Expose supportsOauthClients info for apps by @farukaydin in https://github.com/automatisch/automatisch/pull/2253
* feat(AppConfig): iterate how apps are managed by @barinali in https://github.com/automatisch/automatisch/pull/2244
* feat: disable inputs when data is loading by @kattoczko in https://github.com/automatisch/automatisch/pull/2256
* refactor: Rename AppAuthClient model as OAuthClient by @farukaydin in https://github.com/automatisch/automatisch/pull/2255
* Restructure workers and jobs by @farukaydin in https://github.com/automatisch/automatisch/pull/2257
* chore(test): exclude uncovered controllers by @barinali in https://github.com/automatisch/automatisch/pull/2260
* feat: Add name column to Step model by @farukaydin in https://github.com/automatisch/automatisch/pull/2265
* feat: add support to rename flow step by @barinali in https://github.com/automatisch/automatisch/pull/2266
* feat: introduce inline error messages for InstallationForm and SignUpForm by @kattoczko in https://github.com/automatisch/automatisch/pull/2227
* feat: introduce inline error messages for create user and create role forms by @kattoczko in https://github.com/automatisch/automatisch/pull/2240
* feat(EditableTypography): make icon size and position consistent by @barinali in https://github.com/automatisch/automatisch/pull/2274
* refactor: remove obsolete dependency and its usage by @barinali in https://github.com/automatisch/automatisch/pull/2258
* chore(test): add missing test files in coverage by @barinali in https://github.com/automatisch/automatisch/pull/2275
* refactor(webhook): remove singleton webhook logic by @barinali in https://github.com/automatisch/automatisch/pull/2276
* feat: Implement initial logic of exporting flow by @farukaydin in https://github.com/automatisch/automatisch/pull/2267
* docs: Add REDIS_DB env variable to configuration by @farukaydin in https://github.com/automatisch/automatisch/pull/2280
* feat: Add supportsConnections flag to individual steps by @farukaydin in https://github.com/automatisch/automatisch/pull/2281
* test: Add computeWebhookPath method test for step model by @farukaydin in https://github.com/automatisch/automatisch/pull/2284
* fix(workers): correct worker for trigger queue by @barinali in https://github.com/automatisch/automatisch/pull/2286
* feat: add freescout app with new event trigger by @krzysztof-dk in https://github.com/automatisch/automatisch/pull/2287
* feat(signalwire): add receive call by @barinali in https://github.com/automatisch/automatisch/pull/2249
* feat(virtualq): add actions to manage waiters by @barinali in https://github.com/automatisch/automatisch/pull/2259
* feat: introduce inline error messages when deleting role or user by @kattoczko in https://github.com/automatisch/automatisch/pull/2241
* feat: introduce inline error messages in SamlConfiguration and RoleMappings forms by @kattoczko in https://github.com/automatisch/automatisch/pull/2247
* feat: introduce inline error messages in EditUser form by @kattoczko in https://github.com/automatisch/automatisch/pull/2248
* feat: add error snackbar on failed app authentication by @kattoczko in https://github.com/automatisch/automatisch/pull/2271
* feat: Implement import flow API endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2288
* feat(web): add import flow functionality by @barinali in https://github.com/automatisch/automatisch/pull/2293
* feat(ImportFlowDialog): improve error management and user experience by @barinali in https://github.com/automatisch/automatisch/pull/2294
* fix(apps/get-flows): respond with distinct flows by @barinali in https://github.com/automatisch/automatisch/pull/2298
* test: Add tests for updateWebhookUrl method of step by @farukaydin in https://github.com/automatisch/automatisch/pull/2297
* feat(scheduler): add every N minutes trigger by @barinali in https://github.com/automatisch/automatisch/pull/2296
* fix: Do not create oauth clients for non-supported apps by @farukaydin in https://github.com/automatisch/automatisch/pull/2305
* feat: Create folder model by @farukaydin in https://github.com/automatisch/automatisch/pull/2307
* feat(useImportFlow): invalidate flows on success by @barinali in https://github.com/automatisch/automatisch/pull/2295
* feat(anthropic): add anthropic app with send message action by @barinali in https://github.com/automatisch/automatisch/pull/2299
* feat(perplexity): add perplexity app with send chat prompt action by @barinali in https://github.com/automatisch/automatisch/pull/2301
* feat(together-ai): add app with create completion and create chat completion actions by @barinali in https://github.com/automatisch/automatisch/pull/2302
* feat(mistral-ai): add app with create chat completion action by @barinali in https://github.com/automatisch/automatisch/pull/2303
* feat(openrouter): add app with create chat completion action by @barinali in https://github.com/automatisch/automatisch/pull/2304
* feat: introduce two separate forms in update auth client dialog by @kattoczko in https://github.com/automatisch/automatisch/pull/2306
* feat: apply React Flow's 'nowheel' class to enable scroll in test output by @kattoczko in https://github.com/automatisch/automatisch/pull/2308
* feat: Implement create folder API endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2314
* feat: accept falsy default values by @kattoczko in https://github.com/automatisch/automatisch/pull/2272
* feat: add footer component with version display to AdminSettingsLayout by @kattoczko in https://github.com/automatisch/automatisch/pull/2309
* feat(AdminApplication): hide oauth tab for unsupported apps by @barinali in https://github.com/automatisch/automatisch/pull/2311
* fix(anthorpic/send-message): fix action key by @barinali in https://github.com/automatisch/automatisch/pull/2312
* feat: Implement update folder API endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2316
* feat: make the footer in admin panel sticky by @kattoczko in https://github.com/automatisch/automatisch/pull/2321
* refactor: rename prop submitAuthDefault to submitAuthDefaults by @kattoczko in https://github.com/automatisch/automatisch/pull/2319
* feat: Implement folder removal API endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2320
* test(user): fix date for past trial by @barinali in https://github.com/automatisch/automatisch/pull/2324
* feat(virtualq/actions): add properties JSON field by @barinali in https://github.com/automatisch/automatisch/pull/2315
* fix: remove not used props passed to EditableTypography and fix propTypes by @kattoczko in https://github.com/automatisch/automatisch/pull/2323
* chore: improve playwright pipeline by @kuba618 in https://github.com/automatisch/automatisch/pull/2230
* feat: Implement get folders API endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2326
* feat: clear connection on app change in flow step by @kattoczko in https://github.com/automatisch/automatisch/pull/2322
* fix: add check if errors exist in getUnifiedErrorMessage function by @kattoczko in https://github.com/automatisch/automatisch/pull/2325
* feat(brave-search): add app with web search action by @barinali in https://github.com/automatisch/automatisch/pull/2313
* test(user): fix user trial period by @barinali in https://github.com/automatisch/automatisch/pull/2328
* feat: Add folderId column to the flow model by @farukaydin in https://github.com/automatisch/automatisch/pull/2327
* fix: reddit token refresh fix by @kuba618 in https://github.com/automatisch/automatisch/pull/2330
* feat: Implement update flow folder API endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2331
* chore: add missing doc links by @kuba618 in https://github.com/automatisch/automatisch/pull/2329
* feat(monday): add new users trigger by @ridvanakca in https://github.com/automatisch/automatisch/pull/1880
* feat(monday): add create column action by @ridvanakca in https://github.com/automatisch/automatisch/pull/1879
* feat(monday): add create item action by @ridvanakca in https://github.com/automatisch/automatisch/pull/1878
* feat(monday): add create board action by @ridvanakca in https://github.com/automatisch/automatisch/pull/1869
* feat(monday): add new boards trigger by @ridvanakca in https://github.com/automatisch/automatisch/pull/1856
* feat(monday): add monday integration by @ridvanakca in https://github.com/automatisch/automatisch/pull/1855
* fix: add missing letter in freescout webhook filter labels by @kuba618 in https://github.com/automatisch/automatisch/pull/2335
* task: make Monday triggers order by newest first explicitly by @kuba618 in https://github.com/automatisch/automatisch/pull/2334
* feat: Implement folder filters for get flows API endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2333
* feat: Implement an API endpoint to get flow folder by @farukaydin in https://github.com/automatisch/automatisch/pull/2337
* feat(gmail): add star email action by @ridvanakca in https://github.com/automatisch/automatisch/pull/1834
* feat(gmail): add send to trash action by @ridvanakca in https://github.com/automatisch/automatisch/pull/1831
* feat(gmail): add create draft action by @ridvanakca in https://github.com/automatisch/automatisch/pull/1830
* feat(gmail): add reply to email action by @ridvanakca in https://github.com/automatisch/automatisch/pull/1829
* feat(gmail): add send email action by @ridvanakca in https://github.com/automatisch/automatisch/pull/1826
* feat(gmail): add new emails trigger by @ridvanakca in https://github.com/automatisch/automatisch/pull/1824
* feat(gmail): add gmail integration by @ridvanakca in https://github.com/automatisch/automatisch/pull/1823
* feat(gitea): add new pull requests trigger by @ridvanakca in https://github.com/automatisch/automatisch/pull/1854
* feat(gitea): add create issue action by @ridvanakca in https://github.com/automatisch/automatisch/pull/1853
* feat(gitea): add new issues trigger by @ridvanakca in https://github.com/automatisch/automatisch/pull/1852
* feat(gitea): add new watchers trigger by @ridvanakca in https://github.com/automatisch/automatisch/pull/1850
* feat(gitea): add new stargazers trigger by @ridvanakca in https://github.com/automatisch/automatisch/pull/1849
* feat(gitea): add gitea integration by @ridvanakca in https://github.com/automatisch/automatisch/pull/1848
* feat: in slate deserialization preserve original null and numeric values by @kattoczko in https://github.com/automatisch/automatisch/pull/2336
* fix(flow): copy over step name while duplicating flow by @barinali in https://github.com/automatisch/automatisch/pull/2341
* fix(import-flow): update all variables in step parameters by @barinali in https://github.com/automatisch/automatisch/pull/2342
* fix(variables): use step names in variables by @barinali in https://github.com/automatisch/automatisch/pull/2343
* feat(transformers): add modulo in math operations by @barinali in https://github.com/automatisch/automatisch/pull/2344
* feat(formatter/date-time): add get current timestamp in seconds by @barinali in https://github.com/automatisch/automatisch/pull/2345
* feat(web): introduce folders to organize flows by @barinali in https://github.com/automatisch/automatisch/pull/2332
* fix(folders): reset state on delete folder confirmation dialog close by @barinali in https://github.com/automatisch/automatisch/pull/2346
* fix: Allow to have null folder for flows by @farukaydin in https://github.com/automatisch/automatisch/pull/2350
* fix: Unassign flow folders before removing folder by @farukaydin in https://github.com/automatisch/automatisch/pull/2351
* fix(folders): reset state upon deleting folder and updating flow folder by @barinali in https://github.com/automatisch/automatisch/pull/2352
* feat: Create template model by @farukaydin in https://github.com/automatisch/automatisch/pull/2357
* fix: add missing baseUrl in apps by @kuba618 in https://github.com/automatisch/automatisch/pull/2355
* feat: hide oauth relevant option in app config if supportsOauthClients is false by @kattoczko in https://github.com/automatisch/automatisch/pull/2353
* fix: correctly set initial option value in ChooseConnectionSubstep by @kattoczko in https://github.com/automatisch/automatisch/pull/2348
* refactor: remove not used elements in FlowFolder by @kattoczko in https://github.com/automatisch/automatisch/pull/2349
* chore: Adjust template model file extension to ee by @farukaydin in https://github.com/automatisch/automatisch/pull/2358
* fix: do not use variables in Formatter transform options by @kuba618 in https://github.com/automatisch/automatisch/pull/2359
* feat: Implement admin template serializer by @farukaydin in https://github.com/automatisch/automatisch/pull/2360
* test: add tests for executions by @kuba618 in https://github.com/automatisch/automatisch/pull/2172
* fix: CreateFolderDialog and EditFolderDialog errors by @kattoczko in https://github.com/automatisch/automatisch/pull/2364
* fix: clear parameters on event change in ChooseAppAndEventSubstep by @kattoczko in https://github.com/automatisch/automatisch/pull/2366
* feat: add feedback when folder is removed by @kattoczko in https://github.com/automatisch/automatisch/pull/2365
* feat: Implement admin create template API endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2367
* feat: debounce onAddStep in EditorNew by @kattoczko in https://github.com/automatisch/automatisch/pull/2362
* feat: Implement admin get templates API endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2376
* feat: Implement admin update template API endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2377
* feat: Implement admin delete template API endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2378
* feat: handle long file names in ImportFlowDialog by @kattoczko in https://github.com/automatisch/automatisch/pull/2372
* feat: Add enable templates column to config by @farukaydin in https://github.com/automatisch/automatisch/pull/2381
* feat: display secondary ListItemText content only if is a string by @kattoczko in https://github.com/automatisch/automatisch/pull/2338
* feat: display option value only if it is a string by @kattoczko in https://github.com/automatisch/automatisch/pull/2339
* Implement user templates API endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2385
* feat: introduce customizable footer by @barinali in https://github.com/automatisch/automatisch/pull/2388
* fix(Footer): make footer optional by @barinali in https://github.com/automatisch/automatisch/pull/2389
* feat: Implement initial version of create flow from template logic by @farukaydin in https://github.com/automatisch/automatisch/pull/2387
* test: add import and export flow tests by @kuba618 in https://github.com/automatisch/automatisch/pull/2382
* fix: add automatisch user-agent to Flickr by @kuba618 in https://github.com/automatisch/automatisch/pull/2368
* feat: Implement admin template show API endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2390
* fix: Specify uncategorized flows by using not-owned folders by @farukaydin in https://github.com/automatisch/automatisch/pull/2391
* feat(web): introduce templates by @barinali in https://github.com/automatisch/automatisch/pull/2392
* feat: Add status flag to get flows filters by @farukaydin in https://github.com/automatisch/automatisch/pull/2401
* feat: Add status column to executions by @farukaydin in https://github.com/automatisch/automatisch/pull/2404
* feat: handle 404 error in useFlowFolder by @kattoczko in https://github.com/automatisch/automatisch/pull/2363
* fix: apps icons position by @kattoczko in https://github.com/automatisch/automatisch/pull/2383
* feat: Use status directly from executions by @farukaydin in https://github.com/automatisch/automatisch/pull/2405
* feat: Add index to executions created_at column by @farukaydin in https://github.com/automatisch/automatisch/pull/2406
* feat: align the style of ControlledAutocomplete with ControlledCustomAutocomplete by @kattoczko in https://github.com/automatisch/automatisch/pull/2374
* feat: preserve query params when navigating back to flow page from flow editor by @kattoczko in https://github.com/automatisch/automatisch/pull/2398
* feat: fix search bar to work in harmony with folders by @kattoczko in https://github.com/automatisch/automatisch/pull/2400
* chore: Remove old pagination helper for GraphQL by @farukaydin in https://github.com/automatisch/automatisch/pull/2407
* fix: expand only first level of nodes on load by @kattoczko in https://github.com/automatisch/automatisch/pull/2386
* fix: Filtered flows by only owned with null folder id by @farukaydin in https://github.com/automatisch/automatisch/pull/2410
* feat: Implement name filter for get executions API endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2403
* feat: Implement status filter for executions by @farukaydin in https://github.com/automatisch/automatisch/pull/2412
* feat: show stringified sampleValue in PowerInput by @kattoczko in https://github.com/automatisch/automatisch/pull/2409
* feat: show errors in EditRole form by @kattoczko in https://github.com/automatisch/automatisch/pull/2384
* feat(flows): add flow filters by @barinali in https://github.com/automatisch/automatisch/pull/2408
* feat: handle 404 template error by @kattoczko in https://github.com/automatisch/automatisch/pull/2413
* feat: update react flow library and improve state management by @kattoczko in https://github.com/automatisch/automatisch/pull/2411
* feat: Implement time based filters for executions API endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2414
* test: improve searching for elements on users page by @kuba618 in https://github.com/automatisch/automatisch/pull/2416
* fix(flow-export): update all parameters by @barinali in https://github.com/automatisch/automatisch/pull/2419
* fix: resolve issue with incorrect connections list by @kattoczko in https://github.com/automatisch/automatisch/pull/2415
* feat(executions): add execution filters by @barinali in https://github.com/automatisch/automatisch/pull/2418
* feat: Implement isOwner flag for get flows API endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2423
* test: improvements for windows os execution by @kuba618 in https://github.com/automatisch/automatisch/pull/2424
* test: reorder assertions for user page related tests by @kuba618 in https://github.com/automatisch/automatisch/pull/2426
* feat: Implement isOwner flag to apps get flows API endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2427
* feat: prevent adding connection when app is disabled by @kattoczko in https://github.com/automatisch/automatisch/pull/2421
* feat: Implement API Token model by @farukaydin in https://github.com/automatisch/automatisch/pull/2428
* refactor: Remove convert migrations as its not needed anymore by @farukaydin in https://github.com/automatisch/automatisch/pull/2431
* feat: Implement create API Token endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2430
* feat: Implement listing API tokens API endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2433
* feat: Implement api token removal API endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2434
* feat(migrations): introduce manage permissions instead of create, update, delete, publish by @barinali in https://github.com/automatisch/automatisch/pull/2422
* feat: Separate api token serializers and do not show token except creation by @farukaydin in https://github.com/automatisch/automatisch/pull/2436
* feat: Implement authentication for API tokens by @farukaydin in https://github.com/automatisch/automatisch/pull/2439
* feat: Move api token authentication to .ee files by @farukaydin in https://github.com/automatisch/automatisch/pull/2440
* fix(authorization): expect Flow.read to export flow by @barinali in https://github.com/automatisch/automatisch/pull/2442
* feat(web): introduce API tokens in admin dashboard by @barinali in https://github.com/automatisch/automatisch/pull/2438
* refactor: Use internal namespace for the existing API by @farukaydin in https://github.com/automatisch/automatisch/pull/2445
* feat: Implement isOwner flag for get flow API endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2441
* feat(api): add get-apps endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2446
* feat(api): add get-app endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2447
* feat: disable moving flow to a folder by @kattoczko in https://github.com/automatisch/automatisch/pull/2420
* feat(api): add get-folders endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2448
* test: retain test report on failure by @kuba618 in https://github.com/automatisch/automatisch/pull/2449
* feat(api): add get folders endpoint for users by @barinali in https://github.com/automatisch/automatisch/pull/2450
* feat(api): add create folder endpoint for users by @barinali in https://github.com/automatisch/automatisch/pull/2451
* feat(api): add delete folder endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2452
* feat(api): add get executions endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2453
* feat(api): add get execution endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2454
* feat(api): add get flow endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2455
* feat(api): add create flow endpoint for users by @barinali in https://github.com/automatisch/automatisch/pull/2456
* feat(api): add delete flow endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2457
* feat(api): add update flow status endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2458
* feat(api): get templates endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2459
* feat(api): add get template endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2460
* feat(api): add delete template endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2461
* feat(api): add create template endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2462
* feat(api): add get users endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2463
* feat(api): add get user endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2464
* feat(api): add delete user endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2465
* feat(api): add get flows endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2466
* feat(api): add get user invitations endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2467
* feat(api): add delete user invitation endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2468
* feat(api): add create user invitation endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2469
* test(api): cover user filter in get flows endpoint by @barinali in https://github.com/automatisch/automatisch/pull/2470
* refactor(api): move create-flow endpoint to /flows by @barinali in https://github.com/automatisch/automatisch/pull/2473
* refactor(web): replace CRA with Vite by @barinali in https://github.com/automatisch/automatisch/pull/2471
* feat(api): GET /users responds with active and non-deleted users only by @barinali in https://github.com/automatisch/automatisch/pull/2474
* feat: Convert folders API endpoints to user-scoped ones by @farukaydin in https://github.com/automatisch/automatisch/pull/2476
* chore(web): remove eslintPath and fail eslint depending on mode by @kuba618 in https://github.com/automatisch/automatisch/pull/2482
* feat(mation): add specific remotes for license, telemetry and notifications by @barinali in https://github.com/automatisch/automatisch/pull/2483
* chore: update node version to 22.15.0 by @barinali in https://github.com/automatisch/automatisch/pull/2475
* feat(ImportFlowDialog): preserve flow filters by @barinali in https://github.com/automatisch/automatisch/pull/2478
* chore(web): do not run eslint when APP_ENV=test by @barinali in https://github.com/automatisch/automatisch/pull/2479
* chore(Connection): reword screen name description by @barinali in https://github.com/automatisch/automatisch/pull/2488
* fix(folder): cover soft deleted flows on delete by @barinali in https://github.com/automatisch/automatisch/pull/2487
* test: folder tests by @kuba618 in https://github.com/automatisch/automatisch/pull/2432
* chore(web): update example environment variables by @barinali in https://github.com/automatisch/automatisch/pull/2489
* feat: add forms feature set by @farukaydin in https://github.com/automatisch/automatisch/pull/2490
* refactor: Do not log error traces for 404 and 422 errors by @farukaydin in https://github.com/automatisch/automatisch/pull/2491
* feat: Implement update folder API endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2477
* feat: Integrate esm-module-alias on backend by @farukaydin in https://github.com/automatisch/automatisch/pull/2499
* refactor: Use module aliases within the config dir by @farukaydin in https://github.com/automatisch/automatisch/pull/2500
* bug(backend): fix aliases in scripts by @barinali in https://github.com/automatisch/automatisch/pull/2501
* docs(configuration): add SMTP environment variables by @barinali in https://github.com/automatisch/automatisch/pull/2502
* refactor: Use module aliases for controllers by @farukaydin in https://github.com/automatisch/automatisch/pull/2504
* feat: Implement form data model by @farukaydin in https://github.com/automatisch/automatisch/pull/2492
* refactor: Use module aliases for errors by @farukaydin in https://github.com/automatisch/automatisch/pull/2505
* refactor: Use module aliases for helpers directory by @farukaydin in https://github.com/automatisch/automatisch/pull/2507
* feat(forms): show it only in enterprise edition by @barinali in https://github.com/automatisch/automatisch/pull/2506
* refactor: Use module aliases for jobs directory by @farukaydin in https://github.com/automatisch/automatisch/pull/2508
* refactor: Use module aliases for remaining folders by @farukaydin in https://github.com/automatisch/automatisch/pull/2509
* Form response message by @farukaydin in https://github.com/automatisch/automatisch/pull/2510
* feat: Add description field to form model and related endpoints by @farukaydin in https://github.com/automatisch/automatisch/pull/2511
* feat: Expose description and response message with public form endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2513
* Fix Google Authetication missing refresh token  by @23sergej in https://github.com/automatisch/automatisch/pull/2537
* feat: Implement display name for the form model by @farukaydin in https://github.com/automatisch/automatisch/pull/2545
* feat: Implement submit button text field for forms by @farukaydin in https://github.com/automatisch/automatisch/pull/2547
* feat(forms): add displayName, description and responseMessage on UI by @barinali in https://github.com/automatisch/automatisch/pull/2552
* feat: Expose submit button text within form related endpoints by @farukaydin in https://github.com/automatisch/automatisch/pull/2551
* feat(forms): introduce submit text button field by @barinali in https://github.com/automatisch/automatisch/pull/2553
* feat(forms): accept default and additional values via search params by @barinali in https://github.com/automatisch/automatisch/pull/2554
* feat(forms): add support for multiline and checkbox fields by @barinali in https://github.com/automatisch/automatisch/pull/2555
* feat(forms): add support for dropdown field by @barinali in https://github.com/automatisch/automatisch/pull/2556
* feat(forms): inherit joy theme colors from mui theme by @barinali in https://github.com/automatisch/automatisch/pull/2557
* feat: Frappe/ERPNext App  by @NagariaHussain in https://github.com/automatisch/automatisch/pull/2533
* feat(forms): order form field types by @barinali in https://github.com/automatisch/automatisch/pull/2558
* fix(frappe): fix split on undefined data by @kuba618 in https://github.com/automatisch/automatisch/pull/2559
* refactor: Early return if there is no flow defined in execute flow by @farukaydin in https://github.com/automatisch/automatisch/pull/2560
* feat(telegram-bot): add parse mode option for message formatting by @oasaph in https://github.com/automatisch/automatisch/pull/2562
* refactor: Remove internal steps execute API endpoint by @farukaydin in https://github.com/automatisch/automatisch/pull/2563
* refactor: Do not sent all errors to sentry for app and worker by @farukaydin in https://github.com/automatisch/automatisch/pull/2564
* feat(forms): support readonly and required fields by @barinali in https://github.com/automatisch/automatisch/pull/2565
* feat(forms): support date, time and datetime fields by @barinali in https://github.com/automatisch/automatisch/pull/2566
* feat(forms): introduce input validations by @barinali in https://github.com/automatisch/automatisch/pull/2567
* feat(forms/new-form-submission): support sync submissions by @barinali in https://github.com/automatisch/automatisch/pull/2568
* A couple of grammar fixes by @GameRoMan in https://github.com/automatisch/automatisch/pull/2529
* feat(forms): add respondWith action for custom form submission handling by @barinali in https://github.com/automatisch/automatisch/pull/2569
* fix(admin-settings): correct enterprise permissions by @barinali in https://github.com/automatisch/automatisch/pull/2571
* fix(web): redirect to login on 401 by @barinali in https://github.com/automatisch/automatisch/pull/2572
* feat(smtp/send-email): support html body by @barinali in https://github.com/automatisch/automatisch/pull/2573
* fix(smtp): remove unused SMTP from email in auth by @barinali in https://github.com/automatisch/automatisch/pull/2576
* feat(better-stack): add better stack integration by @ridvanakca in https://github.com/automatisch/automatisch/pull/1463
* tests: api tokens tests by @kuba618 in https://github.com/automatisch/automatisch/pull/2575
* feat(airbrake): add airbrake integration by @ridvanakca in https://github.com/automatisch/automatisch/pull/1588
* test: Search for specific app in tests by @kuba618 in https://github.com/automatisch/automatisch/pull/2580
* feat(smtp): make username and password optional by @barinali in https://github.com/automatisch/automatisch/pull/2574
* feat(github/triggers): add new pull request event trigger by @barinali in https://github.com/automatisch/automatisch/pull/2583
* feat(flow-editor): add continue without test option by @barinali in https://github.com/automatisch/automatisch/pull/2584
* refactor: Rename test step action as test and continue by @farukaydin in https://github.com/automatisch/automatisch/pull/2582
* test: Use static time for generateLogoutRequestBody test of saml auth provider by @farukaydin in https://github.com/automatisch/automatisch/pull/2585
* refactor(user): rename authorized accessor properties as readable by @barinali in https://github.com/automatisch/automatisch/pull/2586
* Fix #2071 notion database load by @erogol in https://github.com/automatisch/automatisch/pull/2548
* feat(notion): add update database item action by @ridvanakca in https://github.com/automatisch/automatisch/pull/1459
* feat(apps): add pdfmonkey integration by @ridvanakca in https://github.com/automatisch/automatisch/pull/1633
* test: update test step endpoint in tests by @kuba618 in https://github.com/automatisch/automatisch/pull/2588
* refactor(editor): remove old editor components and update references by @barinali in https://github.com/automatisch/automatisch/pull/2590
* feat(web): allow customizing execution interval in enterprise by @barinali in https://github.com/automatisch/automatisch/pull/2592
* feat: Add execution interval to the flow model by @farukaydin in https://github.com/automatisch/automatisch/pull/2589
* fix: do not show 'Use as template' in CE by @kuba618 in https://github.com/automatisch/automatisch/pull/2593
* test: add template tests by @kuba618 in https://github.com/automatisch/automatisch/pull/2591
* docs(hubspot): update hubspot connection by @ridvanakca in https://github.com/automatisch/automatisch/pull/1662
* feat(delete-connections): adapt endpoint to manage permissions by @barinali in https://github.com/automatisch/automatisch/pull/2587
* feat(discord): add change scheduled event action by @ridvanakca in https://github.com/automatisch/automatisch/pull/1643
* feat(dropbox): add new folders trigger by @ridvanakca in https://github.com/automatisch/automatisch/pull/1658
* feat(hubspot): add update contact action by @ridvanakca in https://github.com/automatisch/automatisch/pull/1821
* feat(forms): support array field type by @barinali in https://github.com/automatisch/automatisch/pull/2594
* feat: Add rfc-3339 format option to date time converter by @farukaydin in https://github.com/automatisch/automatisch/pull/2596
* refactor(vtiger-crm): get full url for base url by @ridvanakca in https://github.com/automatisch/automatisch/pull/1864
* feat(apps): add changedetection integration by @ridvanakca in https://github.com/automatisch/automatisch/pull/1881
* feat(firefly-iii): add firefly iii integration by @ridvanakca in https://github.com/automatisch/automatisch/pull/1891
* feat(wordpress): add create post action by @ridvanakca in https://github.com/automatisch/automatisch/pull/1901
* feat(ntfy/send-message): add priority and tag fields by @ridvanakca in https://github.com/automatisch/automatisch/pull/1914
* feat(libretranslate): add libretranslate integration by @ridvanakca in https://github.com/automatisch/automatisch/pull/1908
* feat(asana): add asana integration by @ridvanakca in https://github.com/automatisch/automatisch/pull/1915
* feat(eventbrite): add eventbrite integration by @ridvanakca in https://github.com/automatisch/automatisch/pull/1922
* feat(surveymonkey): add surveymonkey integration by @ridvanakca in https://github.com/automatisch/automatisch/pull/1930
* feat(apps): add common API request action by @barinali in https://github.com/automatisch/automatisch/pull/2597
* feat: Add step_type column to step model by @farukaydin in https://github.com/automatisch/automatisch/pull/2602
* fix: exclude tests from coverage by @barinali in https://github.com/automatisch/automatisch/pull/2604
* feat(apps): support private apps by @barinali in https://github.com/automatisch/automatisch/pull/2601
* feat: Add parentStepId to step model by @farukaydin in https://github.com/automatisch/automatisch/pull/2603
* feat: Add branch conditions to step model by @farukaydin in https://github.com/automatisch/automatisch/pull/2605
* refactor: Use structural type instead of step type by @farukaydin in https://github.com/automatisch/automatisch/pull/2606
* feat(telegram/triggers): add new message by @barinali in https://github.com/automatisch/automatisch/pull/2607
* feat(api): introduce openapi.json by @barinali in https://github.com/automatisch/automatisch/pull/2484
* fix(docs): add missing VITE_ prefix to environment variable by @barinali in https://github.com/automatisch/automatisch/pull/2610
* feat: Use swagger ui json file also from env variable by @farukaydin in https://github.com/automatisch/automatisch/pull/2611
* fix(private-apps): serve private app icons by @barinali in https://github.com/automatisch/automatisch/pull/2612
* refactor: Remove outdated inline JSdoc for swagger by @farukaydin in https://github.com/automatisch/automatisch/pull/2613
* Release/v0.15.0 by @farukaydin in https://github.com/automatisch/automatisch/pull/2617
* feat: Implement GitHub release CI flow by @farukaydin in https://github.com/automatisch/automatisch/pull/2616

## New Contributors
* @23sergej made their first contribution in https://github.com/automatisch/automatisch/pull/2537
* @NagariaHussain made their first contribution in https://github.com/automatisch/automatisch/pull/2533
* @oasaph made their first contribution in https://github.com/automatisch/automatisch/pull/2562
* @GameRoMan made their first contribution in https://github.com/automatisch/automatisch/pull/2529
* @erogol made their first contribution in https://github.com/automatisch/automatisch/pull/2548

**Full Changelog**: https://github.com/automatisch/automatisch/compare/v0.14.0...v0.15.0