d4bff9d6b1
feat: Cal.ai Self Serve #2 ( #22995 )
...
* feat: Cal.ai Self Serve #2
* chore: fix import and remove logs
* fix: update checkout session
* fix: type errors and test
* fix: imports
* fix: type err
* fix: type error
* fix: tests
* chore: save progress
* fix: workflow flow
* fix: workflow update bug
* tests: add unit tests for retell ai webhoo
* fix: status code
* fix: test and delete bug
* fix: add dynamic variables
* fix: type err
* chore: update unit test
* fix: type error
* chore: update default prompt
* fix: type errors
* fix: workflow permissions
* fix: workflow page
* fix: translations
* feat: add call duration
* chore: add booking uid
* fix: button positioning
* chore: update tests
* chore: improvements
* chore: some more improvements
* refactor: improvements
* refactor: code feedback
* refactor: improvements
* feat: enable credits for orgs (#23077 )
* Show credits UI for orgs
* fix stripe callback url when buying credits
* give orgs 20% credits
* add test for calulating credits
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com >
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com >
* fix: types
* fix: types
* chore: error
* fix: type error
* fix: type error
* chore: mock env
* feat: add idempotency key to prevent double charging
* chore: add userId and teamId
* fix: skip inbound calls
* chore: update tests
* feat: add feature flag for voice agent
* feat: finish test call and other improvements
* chore: add alert
* chore: update .env.example
* chore: improvements
* fix: update tests
* refactor: remove un necessary
* feat: add setup badge
* chore: improvements
* fix: use referene id
* chore: improvements
* fix: type error
* fix: type
* refactor: change pricing logic
* refactor: update tests
* fix: conflicts
* fix: billing link for orgs
* fix: types
* refactor: move feature flag up
* fix: alert and test call credit check
* fix: update unit tests
* fix: feedback
* refactor: improvements
* refactor: move handlers to separate files
* fix: types
* fix: missing import
* fix: type
* refactor: change general tools functions handling
* refactor: use repository
* refactor: improvements
* fix: types
* fix: type errorr
* fix: auth check
* feat: add creditFor
* fix: update defualt prompt
* fix: throw error on frontend
* fix: update unit tests
* fix: use deleteAllWorkflowReminders
* refactor: add connect phone number
* refactor: improvements
* chore: translation
* chore: update message
* chore: translation
* design improvements buy number dialog
* add translation for error message
* use translation key in error message
* refactor: improve connect phone number tab
* feat: support un saved workflow to tests
* chore: remove un used
* fix: remove un used
* fix: remove un used
* refactor: similify billing
---------
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com >
Co-authored-by: CarinaWolli <wollencarina@gmail.com >
Co-authored-by: Peer Richelsen <peeroke@gmail.com >
Co-authored-by: Keith Williams <keithwillcode@gmail.com >
2025-08-29 05:04:05 +01:00
357c82129c
feat: Dub App integration ( #21321 )
...
Co-authored-by: Peer Richelsen <peeroke@gmail.com >
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com >
2025-05-22 09:18:45 -07:00
ffb36509ff
fix: schedule unscheduled emails with tasker in cron job ( #20748 )
...
Co-authored-by: CarinaWolli <wollencarina@gmail.com >
2025-04-28 08:56:13 -07:00
a3642a5594
feat: move workflow emails to smtp ( #20293 )
...
Co-authored-by: CarinaWolli <wollencarina@gmail.com >
Co-authored-by: Omar López <zomars@me.com >
2025-04-09 11:25:39 -07:00
Joe Au-Yeung and GitHub
8c9eb18463
chore: Add spam checking for workflow bodies ( #18822 )
...
* Add akismet package to tasker
* Create scanWorkflowBody task
* Schedule workflow body scan
* Add AKISMET_API_KEY .env
* Auto lock user if spam is detected
* Uncommit key
* Add safe param to workflow step
* Migration for safe field
* Do not process workflow steps is `safe` is false
* Update migration to set previous records to true
* Address comments
* Refactor `scheduleWorkflowNotifications` to accept an object
* If new steps or editing old ones send to tasker
* Call `scheduleWorkflowNotifications` in task
* Fix `IS_SELF_HOSTED`
* Remove unused function
* Make `safe` optional in schema
* Type fix
* Revert "Make `safe` optional in schema"
This reverts commit d0964702affa87c35562300301473d25635c565b.
* Revert "Type fix"
This reverts commit d9a031303269a2994ae46f576ab2a3d31e4d977b.
* Type fixes
* Type fixes
* Address comments
* Fix tests
* Add tests
* Update tests
* Typo fix
* Update `safe` to `verifiedAt`
* feat: Compare workflow reminder bodies to default template (#19060 )
* Add `getTemplateForAction` function
* Use `getTemplateForAction` when creating a new step
* Use `getTemplateForAction` when action changes
* Have `emailReminderTemplate` accept an object as a param
* Rename `getTemplateForAction` to `getTemplateBodyForAction`
* Simplify changing body when changing templates
* Create `compareReminderBodyToTemplate`
* In task, compare if reminderBody is a template
* Linting
* Add tests
* refactor: `emailReminderTemplate` to accept object as param (#19288 )
* Add `getTemplateForAction` function
* Use `getTemplateForAction` when creating a new step
* Use `getTemplateForAction` when action changes
* Have `emailReminderTemplate` accept an object as a param
* Rename `getTemplateForAction` to `getTemplateBodyForAction`
* Simplify changing body when changing templates
* Create `compareReminderBodyToTemplate`
* In task, compare if reminderBody is a template
* Linting
* Add tests
* Refactor `scheduleEmailReminders`
* Refactor `create.handler` for new workflows
* Refactor `emailReminderManager`
* Refactor `getEmailTemplateText`
* Fix typo
* Type fix - whatsapp plain text template imports
* Type fix - no template found
* Type fix - add `isBrandingDisabled` to `emailReminderTemplate`
* Add workflow and user to prisma mock
* Fix imports for akismet dependencies
* Record user lock reason
* Undo linting changes
* Fix tests
* New workflow, at verify created step
* Handle if `SCANNING_WORKFLOW_STEPS` is toggled
* Move `verifiedAt` checks to specific schedule functions
- `scheduleWhatsappReminder`
- `scheduleEmailReminder`
- `scheduleSMSReminder`
* Update logic
* Do not fallback verifiedAt
* Add comment to next.config.js
2025-04-02 08:16:26 -07:00
+9
6561b92f40
perf: Move CRM event creation to tasker ( #18370 )
...
* Upgrade jsforce to 3.6.2
* Refactor connecting to Salesforce
* Revert yarn.lock changes
* Add `TASKER_ENABLE_CRM_EVENT_CREATION` to .env
* Add createCRMEvent scheduler
* Schedule CRM event creating in `EventManager`
* Add calendar event builder for CRM tasks
* Do not write to person record if fields don't exist
* Change type to expect string from tasker
* Create CRM event
* Create booking references
* Type fixes
* Migrate callback endpoint
* Add jsforce node dependency
* Migrate add endpoint
* Import
* Import package into crmService
* Use new package types
* Type fix
* Update vite config
* Push updated lockfile
* Attempt to bump platform/libraries to unlock jsforce
* Also update lockfile, naturally
* bump platform libraries
* feat: salesforce to tasker improvements (#18419 )
* feat: salesforce to tasker
* refactor: event manager
* tests: add unit tests for create CRM Event
* Update vite.config
* Add jsforce to vite config
* Revert mint.json changes
* Default to not enabling
* Revert yarn.lock changes
* Remove `TASKER_ENABLE_CRM_EVENT_CREATION` variable
* Revert yarn.lock changes
* feat: Round Robin weights future members toggle (#17782 )
Co-authored-by: Omar López <zomars@me.com >
* detailed customer card (#18511 )
Co-authored-by: Omar López <zomars@me.com >
* chore: app router - all sub-pages in `/apps` (#16976 )
* chore: apps/[slug] remove pages router
* remove apps/[slug] pages from /future
* chore: apps/installed remove pages router
* chore: apps/installation remove pages router
* remove Head element
* fix metadata
* fix test
* fix another test
* chore: apps/categories remove pages router
* revert unneeded changes
* update middleware
* Remove <Head>
* remove unused import and code
* remove unused import and code again
* fix
* fix category page
* add split icon
* add /routing paths to middleware matcher
* wip
* remove HeadSeo from App.tsx
* clean up head-seo test
* add generateAppMetadata
* use generateAppMetadata in apps/[slug] page
* delete file
* remove log
* fix
* fix
* fix apps/installed pages
* fix cateogires pages
* fix
* fix imports
* wip
* fix
* fix
* fix metadata
* fix
* redirect /apps/routing-forms to /routing
* replace all usages of /apps/routing-forms to /routing
* better naming
* /routing -> /routing/forms
* fix
* fix
* fix
* fix
* remove backPath as it is irrelevant when withoutMain is true
* fix type checks
* fix type check in apps/[slug]
* refactors
* fix
* fix test
* fix
* fix
* fix
* Replace multiple leading slashes with a single slash
* migrate routing-forms too
* add re routing
* fix
* add redirection
---------
Co-authored-by: Peer Richelsen <peeroke@gmail.com >
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com >
* chore: app router 404 page (#18597 )
* wip
* wip
* fix not found page
* render middleware for /settings pages
* fix
* remove global-error page
* add metadata to not-found page
* make not-found page static
* remove 404
* adding not-found to middleware is not necessary
* add every routes to config.matcher
* fix test
* fix style
* use i18n string
* fix tests
* fix
* fix
* revert unneeded changes
* fix
* fix
* fix
* fix style
* fix
* remove 404
* remove log
* fix
* fix
* fix
* fix
* better naming
* parallel testing
---------
Co-authored-by: Benny Joo <sldisek783@gmail.com >
* feat: render custom error page for unexpected sever error + remove` pages/_error` (#18606 )
* remove page/_error
* refactor app/error
* fix: app/not-found cannot be a static page (#18610 )
* Async False (#18611 )
* chore: redirect to /500 if pathname does not exist + better error handling (#18615 )
* fix lint error
* fix booking page and better error handling
* chore: gracefully handle 404s from pages router's dynamic pages + tests (#18618 )
* restore pages/_error
* set custom header in pages/_error
* handle it in middleware
* add test
* remove logs
* better test description
* chore: try using custom 404 in pages/_error (#18622 )
* fix: parsing teamId (#18623 )
* chore: restore error pages for pages router (#18625 )
* disable emails to all guests (#18628 )
Co-authored-by: CarinaWolli <wollencarina@gmail.com >
* revert: "feat: bulk shorten links with dub.links.createMany (#18539 )" (#18587 )
This reverts commit 4902c6a0f8 .
Co-authored-by: Alex van Andel <me@alexvanandel.com >
* chore: release v4.8.18
* fix: disable sending sms when email is present (#18632 )
* fix: disable sending sms when email is present
* fix: update test
* fix: main lint errors (#18634 )
* fix: error-page.tsx related lint errors
* fix: lint no continue-on-error
* Adding more lint fixes
* Bring back annotate code linting results
* Bring back linting continue-on-error
* Slimline lint
* feat: do not show automation webhooks in webhook list (#18607 )
* fix: make ESLint work and fix lint errors that were undetected before (#18639 )
* fix eslint config
* fix
* add it to dev dep
* fix
* sync eslint version
* force ts-node to compile our ESLint plugin's TS files into CommonJS (which ESLint requires)
* fix some lint errors
* fix lint errors
* remove duplicate classname
* make @typescript-eslint/ban-types a warn for packages/trpc files
* fix lint errors in trpc
* fix lint errors in trpc - 2
* fix
* fix
* fix lint warnings
* chore: clean up config.matcher in middleware (#18638 )
Co-authored-by: Alex van Andel <me@alexvanandel.com >
* Allow lint to error but continue (unblock pipeline)
* fix: potential fix for flaky layout shift (#18651 )
* potential fix: layout shift
* fix lint error
* feat: update translations via @replexica (#18598 )
* chore: sync with main
* feat: update translations via @replexica
---------
Co-authored-by: Replexica <support@replexica.com >
* Update yarn.lock
* nit: let tasker handle payload stringification
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com >
Co-authored-by: Alex van Andel <me@alexvanandel.com >
Co-authored-by: Morgan <33722304+ThyMinimalDev@users.noreply.github.com >
Co-authored-by: Morgan Vernay <morgan@cal.com >
Co-authored-by: Omar López <zomars@me.com >
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com >
Co-authored-by: Nizzy <140507264+nizzyabi@users.noreply.github.com >
Co-authored-by: Benny Joo <sldisek783@gmail.com >
Co-authored-by: Peer Richelsen <peeroke@gmail.com >
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com >
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com >
Co-authored-by: CarinaWolli <wollencarina@gmail.com >
Co-authored-by: Keith Williams <keithwillcode@gmail.com >
Co-authored-by: GitHub Actions <github-actions@github.com >
Co-authored-by: Kartik Saini <41051387+kart1ka@users.noreply.github.com >
Co-authored-by: Calcom Bot <109866826+calcom-bot@users.noreply.github.com >
Co-authored-by: Replexica <support@replexica.com >
2025-01-16 22:07:30 -05:00
6739ed3a87
feat: Title - AI translation for booking pages ( #17794 )
...
* feat: AI description - DB model + frontend + backend (fetch only)
* fix types and add validation to backend
* improve log
* improve
* import type
* add EventTypeTranslationRepository
* fix replexica error
* fix replexica error
* fix
* fix test
* wip
* wip
* add createManyDescriptionTranslations method
* improve logic
* refactor
* update replexica type
* improve typing
* Renamed descriptionTranslations to fieldTranslations
* log errors in replexica service
* handle translations in background
* don't create, upsert instead
* make sure that description is updated
* simplify
* fix
* Update packages/trpc/server/routers/viewer/eventTypes/update.handler.ts
* improve filter logic in frontend
* implement background job using Tasker
* update schema
* update schema again
* rename
* rename id to uid
* add migration
* fix type
* update
* update schema and migration sql
* fix migration
* fix type check
* fix type check 2
* improve find logic in EventMeta
* add more validation
* add logger
* rename
* upgrade replexica/sdk to 0.7.0
* upgrade replexica to 0.7.0
* use batchLocalizeText
* add comments
* override browser locale if user is a signed in calcom user
* fix type in replexica
* fix migration sql
* fix type
* use dynamic import
* do not use batchLocalizeText
* chore: drop sourceLang, targetLang and id columns
* fix
* wip
* add more validations
* fix type error
* address comment
* refactor
* update booking page to use translated title
* fix type error
* fix
* revert yarn.lock changes
* remove unused import
* remove duplication migrate.sql file
* fix test
* remove test tags
* fix function name
* refactor
* fix type check
* use Promise.all
* remove unneeded code
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com >
2024-12-11 14:18:32 +01:00
62976a4c77
feat: AI description - Backend for adding translation objects to EventType model ( #17657 )
...
* feat: AI description - DB model + frontend + backend (fetch only)
* fix types and add validation to backend
* improve log
* improve
* import type
* add EventTypeTranslationRepository
* fix replexica error
* fix replexica error
* fix
* fix test
* wip
* wip
* add createManyDescriptionTranslations method
* improve logic
* refactor
* update replexica type
* improve typing
* Renamed descriptionTranslations to fieldTranslations
* log errors in replexica service
* handle translations in background
* don't create, upsert instead
* make sure that description is updated
* simplify
* fix
* Update packages/trpc/server/routers/viewer/eventTypes/update.handler.ts
* improve filter logic in frontend
* implement background job using Tasker
* update schema
* update schema again
* rename
* rename id to uid
* add migration
* fix type
* update
* update schema and migration sql
* fix migration
* fix type check
* fix type check 2
* improve find logic in EventMeta
* add more validation
* add logger
* rename
* upgrade replexica/sdk to 0.7.0
* upgrade replexica to 0.7.0
* use batchLocalizeText
* add comments
* override browser locale if user is a signed in calcom user
* fix type in replexica
* fix migration sql
* fix type
* use dynamic import
* do not use batchLocalizeText
* fix
* add more validations
* fix type error
* address comment
* update locales
* update locales
---------
Co-authored-by: Keith Williams <keithwillcode@gmail.com >
2024-11-25 18:37:42 +00:00
2f4dd328c3
feat: new webhook 'Form submitted, no event booked' ( #17119 )
...
* add new webhook
* schedule trigger functions
* implement tasker
* fix type errors
* add tests
* remove unused code
* finish tests
* remove unsued code from debugging
* Fix: client-server mixed exports
* Update tasker.ts
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com >
Co-authored-by: zomars <zomars@me.com >
2024-10-22 03:38:33 +00:00
395381ddcc
feat: automatic no show ( #16727 )
...
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com >
Co-authored-by: Alex van Andel <me@alexvanandel.com >
Co-authored-by: Peer Richelsen <peeroke@gmail.com >
Co-authored-by: CarinaWolli <wollencarina@gmail.com >
Co-authored-by: zomars <zomars@me.com >
2024-10-10 10:57:04 -07:00
5695ba7c13
feat: Tasker ( #14180 )
...
Co-authored-by: Alex van Andel <me@alexvanandel.com >
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com >
2024-04-18 11:56:25 -07:00