* Add `rerouting` to `AssignmentReasonRecorder`
* Pass session email as `rescheduledBy`
* Write reassign reason
* Edit message
* Use `routingFormRoute` when rerouting
* Pass isRerouting & reroutedByEmail to `routingFormRoute` method
* Type fix
* Fix test
* Fix test
* Fix test
* Type fix
* Refactor to use UserRepository
* Show rerouted by email
* Replace isReroutingCase
* Fix rescheduledBy for new tab reschduling
---------
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Hariom <hariombalhara@gmail.com>
* feat: add field type change warning dialog to routing forms
- Add FieldTypeChangeWarningDialog component to prevent field type changes
- Show informative dialog explaining data integrity concerns when users try to change field types
- Provide alternative suggestion to create new field instead of changing existing one
- Add i18n translations for dialog messages
- Integrate dialog into routing form edit page field type selector
- Bypass Teams plan restriction for testing routing forms functionality
- Fix ESLint error by properly handling scrollIntoView in embed mode with disable comment
Prevents data integrity issues by blocking field type changes (e.g. multiselect → text)
that could make existing form responses incompatible and cause data loss.
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* fix: make field type dialog more selective to allow legitimate changes during form creation
- Only show warning dialog when there's actual data integrity risk
- Allow field type changes for new fields or fields without meaningful labels
- Fixes E2E test timeout by not blocking legitimate field type changes
- Maintains data protection for existing fields with real data
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* fix: complete field type dialog implementation with translations and component
- Add FieldTypeChangeWarningDialog component with proper i18n support
- Add all required translation strings for dialog messages
- Ensure dialog only shows for actual data integrity risks
- Allow legitimate field type changes during form creation
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* simplify field type dialog: one button, button replaces SelectField, remove forms page changes
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* use Button component
* feat: restore SelectField with conditional dialog for field type changes
- Restore original SelectField dropdown to allow users to see available field types
- Add conditional logic to show dialog only when different type is selected AND form has responses
- Prevent field type changes by not calling onChange when dialog is shown
- Pass hasFormResponses prop from FormEdit to Field component
- Maintain data integrity while providing clear user guidance
Co-Authored-By: eunjae@cal.com <hey@eunjae.dev>
* controlled value
* convert dialog to tooltip
* Update common.json
* remove unused texts
* allow type changing for new field
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: eunjae@cal.com <hey@eunjae.dev>
* fix error codes in og/image route
* test
* simplify
2025-06-25 11:24:34 -03:00
Joe Au-YeungGitHubDevin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>joe@cal.com <joe@cal.com>Benny Joocubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>Hariom
* Restart form if admin is not org admin
* Show pricing is admin and hosted
* Only show billing specific fields when enabled
* Create user onboarding only if valid valid license when self hosting
* Reset store when org creation is completed
* Create schema for trpc input when creating an org
* Add `organization.createSelfHosted` trpc endpoint
* `createOrganizationFromOnboarding` do not require stripe data
* Create organization without billing if self-hosted admin
* Update organizationOnboarding record as completed
* Handle updating subscription for self hosters
* Refactor `isBillingEnabled` to store
* Type fix
* Fix admin org creation for hosted
* Hide UI from admin
* Add tests
* fix: Fix LicenseKeySingleton mocking in organization tests
- Add proper vi.mock() module-level mocking for LicenseKeySingleton
- Replace incorrect casting syntax with vi.mocked() approach
- Add LicenseKeySingleton mock to hosted tests in intentToCreateOrg.handler.test.ts
- Fix IS_SELF_HOSTED mocking for hosted vs self-hosted test scenarios
- All organization creation tests now pass locally
Co-Authored-By: joe@cal.com <joe@cal.com>
* Fix tests
* Fix tests
* Test fixes
* Type fix
* Type fix
* Type fix
* Update packages/features/ee/organizations/lib/server/createOrganizationFromOnboarding.test.ts
Fix typo
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
* fix: Add IS_SELF_HOSTED mocking for E2E organization creation tests
Co-Authored-By: joe@cal.com <joe@cal.com>
* Fix E2E test
* Address feedback
* Type fix
* Fix e2e tests
* Remove unused code
* Small fixes
* fix unit tests
* review fixes
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: joe@cal.com <joe@cal.com>
Co-authored-by: Benny Joo <sldisek783@gmail.com>
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
Co-authored-by: Hariom <hariombalhara@gmail.com>
* fix creating user balance
* fix org check if teamId is given
* adjust hasAvailableCredits function
* improve comments
* fix creditBalance.create
* adjust test
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* add smsSegments to creditExpenseLog
* add download button
* download only data from selected month
* improvements
* improve design
* use repository function
* add tests for credit repository
* fix type error
* fix unit test
* fix type error
* fix unit test
* code clean up
* fix skeleton loader
* remove empty mt
* code clean up
* move csv headers out of function
---------
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Benny Joo <sldisek783@gmail.com>
* Add queued booking response table
* Create `RoutingFormResponseRepository`
* Pass `queueFormResponse` param
* Queue up form response if param is passed
* Forward queued form response parma to booker
* Pass `queuedFormResponse` from booker to `handleNewBooking`
* Write queued routing form response
* Type fixes
* Clean up
* Allow dry run to work which wont have any QueuedFormResponse or FormResponse
* Support passing the time when the modal was actually shown to the user and consider that time as the time of form submission
* fix ts error
* Queue -> Response through separate endpoint that would be triggered by
embed
* Make queueResponseId a non-guessable uid
* Change queueFormResponse query param
* fix ts error
* Support useQueuedResponse to record new response data
* revert handleNewBooking
* Remove dead code formResponse
* Refactor use repository
* Unify migration files
* refactor: moved api endpoint to app dir
Signed-off-by: Omar López <zomars@me.com>
* Update formResponse.ts
* Refactor use-queued-response for test
* Add tests
* Fix ts error and unit test. recordFormResponse cant return nullish response
* fix schema
* feat: Support full reuse of preloaded iframe (#21803)
* feat: support updating cal video settings in API v2 (#21784)
* feat: support updating cal video settings in API v2
* chore: update descriptio
* feat: support create event type
* test: add test for updating event type
* test: add test for create event type
* chore: undo openapi
* chore: bump libraries
* Revert "chore: bump libraries"
This reverts commit bdf36d09b021fc531497a7b7ea66ab9c52b7d136.
* chore: bump libraries
---------
Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com>
Co-authored-by: supalarry <laurisskraucis@gmail.com>
* fix tests and ts
* Fix tests
* wip-useQueuedResponseEndpoint
* Add one more test
* Change queueFormResponse query param
* wip
* Support useQueuedResponse to record new response data
* Use the update useQueuedResponse endpoint
* self-review addressed
* Use queuedResponse if available in slots/utils
* Add documentation
* Remove use-queued-response from critical-path
---------
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com>
Co-authored-by: supalarry <laurisskraucis@gmail.com>
* Update schema.prisma
* refactor: renamed to avoid react hooks confusion
Signed-off-by: Omar López <zomars@me.com>
---------
Signed-off-by: Omar López <zomars@me.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Lauris Skraucis <lauris.skraucis@gmail.com>
Co-authored-by: supalarry <laurisskraucis@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* feat: optimize Prisma queries by replacing findFirst with findUnique where applicable
- Replace findFirst/findFirstOrThrow with findUnique/findUniqueOrThrow for queries using unique constraints
- Maintain existing functionality and error handling behavior
- Focus on queries using primary keys and unique index fields from schema
- Revert problematic changes that caused test failures to maintain stability
Co-Authored-By: benny@cal.com <benny@cal.com>
* revert: exclude API files from Prisma query optimizations per user request
- Reverted all 55 API-related files to their original state
- Kept all non-API Prisma query optimizations intact
- API files include apps/api/v1, apps/api/v2, apps/web/app/api, and packages/app-store/*/api
- Non-API optimizations remain for packages/lib, packages/features, apps/web (non-api), etc.
Co-Authored-By: benny@cal.com <benny@cal.com>
* feat: optimize membership query in attributeUtils to use findUnique with userId_teamId constraint
Co-Authored-By: benny@cal.com <benny@cal.com>
* revert: exclude test files from Prisma query optimizations per user request
Co-Authored-By: benny@cal.com <benny@cal.com>
* revert: revert attributeUtils.ts to use findFirst for test compatibility
Co-Authored-By: benny@cal.com <benny@cal.com>
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: benny@cal.com <benny@cal.com>
Co-authored-by: Anik Dhabal Babu <81948346+anikdhabal@users.noreply.github.com>
* feat - Restrict same email to create more than 'n' active bookings at a time
* updated checkbookerbookinglimit function
* type fix
* minor change
* import fix
* minor fixes
* back to null on disable
* back
* type check
* managed edge cases
* chore: name changes
* name changes
* fix
* minor change
* changed name
* use default value for maxactivebookingsperbooker, and some minor changes
* disabling bookerbooking limit for recurring event
* disabling bookerbooking limit for recurring event
* type fix
* ui fix and backend eventtype update check
* Add `maxActiveBookingPerBookerOfferReschedule` to schema
* Create `MaxActiveBookingsPerBookerController` and offer reschedule option
* Add offer reschedule to event type form data
* Pass data through to HttpError
* When checking max bookings, return last booking info if applicable
* removed unused code
* minor changes
* update validation
* chore
* Do not check booking limits if rescheduling
* Add data for reschedule
* Add reschedule specific error code
* On maximum booking error, write to booker store reschedule params
* Add translations for error codes
* Write to error message previous booking time
* minor fix
* Write to error message previous booking time
* Type fixes
* Clean up comment
* Refactor eventType update errors
* Typo fix
* Type fix
* Type fix
* Type fix
* Fix test
* Fix test
* Add migration
* Addressed feedback and missed merges
---------
Co-authored-by: romit <romitgabani@icloud.com>
* feat - Restrict same email to create more than 'n' active bookings at a time
* updated checkbookerbookinglimit function
* type fix
* minor change
* import fix
* minor fixes
* back to null on disable
* back
* type check
* managed edge cases
* chore: name changes
* name changes
* fix
* minor change
* changed name
* use default value for maxactivebookingsperbooker, and some minor changes
* disabling bookerbooking limit for recurring event
* disabling bookerbooking limit for recurring event
* type fix
* ui fix and backend eventtype update check
* removed unused code
* minor changes
* update validation
* chore
* Do not check booking limits if rescheduling
* minor fix
* Refactor eventType update errors
* Typo fix
---------
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>