- Notifications
You must be signed in to change notification settings - Fork11.2k
Comparing changes
Open a pull request
base repository:calcom/cal.com
Uh oh!
There was an error while loading.Please reload this page.
base:v5.9.6
head repository:calcom/cal.com
Uh oh!
There was an error while loading.Please reload this page.
compare:main
- 14commits
- 142files changed
- 12contributors
Commits on Nov 27, 2025
fix: allow-reschedule-on-prevent-impersonation (#25427)
* fix: allow-reschedule-on-prevent-impersonation* remove selfexplanatory comment
fix: signup username collision (#25435)
* fix: signup username collision* tests: add unit tests
fix: eventypes description overflow issue (#25436)
* fix: add overflow-y-auto to prevent description text from spilling over* Rename setter for seatedEventData in EventMeta
chore: update transcript endpoint description (#25385)
* chore: update transcript endpoint description* chore: update transcript endpoint description
fix: Add PBAC permission checks for insights access (#25381)
* fix: Add PBAC permission checks for insights access- Add checkInsightsPermission() helper that properly checks insights.read permission with PBAC support- Update userBelongsToTeamProcedure to use PBAC-aware permission check for org-level access- Update teamListForUser query to filter teams based on insights.read permission instead of only checking base ADMIN/OWNER roles- Maintain backward compatibility with fallback to traditional role checks (ADMIN/OWNER) when PBAC is disabled- Org admins (base role ADMIN/OWNER) continue to have automatic insights access as a privileged position- Team-level admins with custom roles now properly checked for insights.read permissionFixes issue where users with custom PBAC roles couldn't access insights even if they had insights.read permission.Related: CAL-XXXX* perf: Optimize team permission checks to avoid N+1 queriesReplace individual permission checks per team with bulk query using getTeamIdsWithPermission().This reduces database queries from N (one per team) to a single optimized query.- Use PermissionCheckService.getTeamIdsWithPermission() for bulk permission checking- Filter teams based on returned team IDs instead of individual checks- Maintains same functionality with significantly better performance for users with many teams* perf: Fetch only teams with insights access instead of filtering afterMove permission check before team query to filter at database level.Previously fetched all teams then filtered in JavaScript.Now only fetches teams the user has insights access to.- Check permissions first using getTeamIdsWithPermission()- Add teamId filter to membership query (teamId: { in: teamIdsWithAccess })- Remove JavaScript filter step (done at DB level)- Reduces data transfer and improves query efficiency
Commits on Nov 28, 2025
refactor: consolidate error handlers to use getServerErrorFromUnknown (…
…#25114)* refactor: consolidate error handlers to use getServerErrorFromUnknown- Migrate server-only code to use getServerErrorFromUnknown for better error handling- Add JSDoc documentation to both getErrorFromUnknown and getServerErrorFromUnknown- Update webhook handlers, payment services, email service, and booking service- Keep getErrorFromUnknown for client-side and isomorphic code- Improve error message extraction by using err.cause?.stack instead of err.stack- Fix ESLint warnings: replace 'any' with 'unknown' types, fix hasOwnProperty usageCo-Authored-By: benny@cal.com <sldisek783@gmail.com>* Update packages/app-store/paypal/api/webhook.tsCo-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>* refactor---------Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
feat: posthog version upgrade and added trackings (#24401)
* posthog version upgrade and calai banner tracking* disable posthog for EU* bunch more posthog tracking* Revert yarn.lock changes* add posthog package yarn changes* fix: add missing posthog import and fix lint warning in MemberInvitationModalCo-Authored-By: amit@cal.com <samit91848@gmail.com>* fix: type check* cubic fixes* refactor* remove ui playground---------Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
feat: Booking EmailAndSms Notifications Tasker (#24944)
* wip* wip* feature: Booking Tasker without DI yet* feature: Booking Tasker with DI* fix type check 1* fix type check 2* fix* comment booking tasker for now* fix: DI regularBookingService api v2* fix: convert trigger.dev SDK imports to dynamic imports to fix unit testsThe unit tests were failing because BookingEmailAndSmsTriggerTasker.ts had static imports of trigger files that depend on @trigger.dev/sdk. This caused Vitest to try to resolve the SDK at module load time, even though it should be optional.Changed all imports in BookingEmailAndSmsTriggerTasker.ts from static to dynamic (using await import()) so the trigger files are only loaded when the tasker methods are actually called, not at module load time during tests.This fixes the 'Failed to load url @trigger.dev/sdk' errors that were causing 28+ test failures.Co-Authored-By: morgan@cal.com <morgan@cal.com>* fix unit tests* keep inline smsAndEmailHandler.send calls* chore: add team feature flag* add satisfies ModuleLoader* fix type check app flags* move trigger in feature* fix: add trigger.dev prisma generator* fix: email app statuses* fix: CalEvtBuilder unit test* chore: improvements, schema, config, retry* fixup! chore: improvements, schema, config, retry* chore: cleanup code* chore: cleanup code* chore: clean code and give full payload* remove log* add booking notifications queue* add attendee phone number for sms* bump trigger to 4.1.0* add missing booking seat data in attendee* update config* fix logger regular booking service* fix: prisma as external deps of trigger* fix yarn.lock* revert change to example app booking page* fix: resolve circular dependencies and improve cold start performance in trigger tasks- Convert BookingRepository import to type-only in CalendarEventBuilder.ts to eliminate circular dependency risk- Convert EventNameObjectType, CalendarEvent, and JsonObject imports to type-only in BookingEmailAndSmsTaskService.ts- Use dynamic imports in all trigger notification tasks (confirm, request, reschedule, rr-reschedule) to reduce cold start time- Move heavy imports (BookingEmailSmsHandler, BookingRepository, prisma, TriggerDevLogger, BookingEmailAndSmsTaskService) inside run functions- Eliminates module-level prisma import which violates repo guidelines and adds cold start overhead- Reduces initial module dependency graph by deferring heavy imports (email templates, workflows, large repositories) until task executionCo-Authored-By: morgan@cal.com <morgan@cal.com>* fix: improve cold start performance in reminderScheduler with dynamic imports- Remove module-level prisma import (violates 'No prisma outside repositories' guideline)- Use dynamic imports for UserRepository (1,168 lines) - only loaded when needed in EMAIL_ATTENDEE action- Use dynamic imports for twilio provider (386 lines) - only loaded in cancelScheduledMessagesAndScheduleEmails- Use dynamic imports for all manager functions by action type: - scheduleSMSReminder (387 lines) - loaded only for SMS actions - scheduleEmailReminder (459 lines) - loaded only for Email actions - scheduleWhatsappReminder (266 lines) - loaded only for WhatsApp actions - scheduleAIPhoneCall (478 lines) - loaded only for AI phone call actions- Use dynamic imports for sendOrScheduleWorkflowEmails in cancelScheduledMessagesAndScheduleEmails- Significantly reduces cold start time by deferring heavy module loading until execution paths need them- Eliminates module-level prisma import that violated repository pattern guidelinesCo-Authored-By: morgan@cal.com <morgan@cal.com>* fix: improve cold start performance in BookingEmailSmsHandler with dynamic imports- Remove module-level imports of all email-manager functions (653 LOC + 30+ email templates)- Add dynamic imports in each method (_handleRescheduled, _handleRoundRobinRescheduled, _handleConfirmed, _handleRequested, handleAddGuests)- Defer heavy email-manager loading until method execution- Verified no circular dependencies between email-manager and bookings- Significantly reduces cold start time for RegularBookingService and BookingEmailAndSmsTaskServiceCo-Authored-By: morgan@cal.com <morgan@cal.com>* fix: use dynamic imports* update yarn lock* code review* trigger config project ref in env* update yarn lock* add .env.example trigger variables* add .env.example trigger variables* fix: cleanup error handling and loggin* fix: trigger config from env* fix: small typo fix* fix: ai review comments* fix: ai review comments* ai review* prettier---------Co-authored-by: hbjORbj <sldisek783@gmail.com>Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
fix:
Connectatoms not working inside iframe (#25418)* fix: google connect broken for iframe* chore: add changesets* chore: update atoms exports* chore: update atoms exports
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:git diff v5.9.6...main
Uh oh!
There was an error while loading.Please reload this page.