v0.15.0
ruixenui/ruixen.comv0.15.0Aug 8, 2025by farukaydin
AI Summary
This release focuses on extensive testing, refactoring of workers and queues, and new features including inline error messages and flow import/export functionality.
Key Highlights
- Added inline error messages for forms
- Refactored workers and queues
- Added flow import and export functionality
- Renamed AppAuthClient model to OAuthClient
New Features
- Inline error messages for ForgotPassword, ResetPassword, and installation forms
- Refactored workers and queues to eliminate redundant listeners
- Flow import and export API endpoints
- Added support for renaming flow steps
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