v0.15.0
medusajs/medusav0.15.0Aug 8, 2025by farukaydin
AI Summary
This release focuses on refactoring the build system by removing Lerna and Yarn workspaces, adding comprehensive test coverage for user models and authentication flows, and introducing new features like inline error messages, flow import/export functionality, and new app integrations.
Key Highlights
- Refactored build system by removing Lerna and Yarn workspaces
- Added comprehensive test coverage for user authentication and flow logic
- Introduced inline error messages for Forgot Password, Installation, and User forms
- Implemented flow import/export functionality via API and UI
- Added new app integrations including Anthropic, Signalwire, and FreeScout
Breaking Changes
- Removed Lerna and Yarn workspaces from the project structure
- Renamed database table `saml_auth_providers_role_mappings` to `role_mappings`
- Renamed model `AppAuthClient` to `OAuthClient`
New Features
- Inline error messages for ForgotPassword, ResetPassword, Installation, SignUp, User, and Role forms
- Flow import/export functionality (API endpoint and UI dialog)
- New app integrations: Anthropic (send message), Signalwire (receive call), FreeScout (new event trigger)
- Every N minutes scheduler trigger
- Folder model creation
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