Commit Graph
7931 Commits
Author SHA1 Message Date
Anirban Singha 5d6d4d30cc refactor: app category metadata to use Record<AppCategories, AppCategoryEntry> for exhaustive type safety (#29558)
* refactor: derive category metadata from single Record source of truth

* test: add test for category order and entries sync

* fix: check for duplicates
2026-06-29 20:25:39 +05:30
Jimmy He 62317bd4e1 fix: pass bookingFields and locale to handlePayment in createNewSeat (#29639) 2026-06-25 04:21:38 +00:00
Anirban Singha 051ae77279 chore: remove obsolete ts comment (#29638) 2026-06-24 22:30:25 +00:00
Anirban SinghaandBandhan Majumder 0d164da8dd fix: implement missing password validation (#27634)
* fix: validate password presence and requirements

* chore: add error code for invalid passwords

* chore: avoid trimming password

* chore: add test for password validation

* fix: update password to delete user

* fix: create user password following protocol

* test: simplify deleteMeHandler password validation tests

* fix: address coderabbit

* fix: modify login params for failing tests

* fix: failing e2e tests

---------

Co-authored-by: Bandhan Majumder <133476557+bandhan-majumder@users.noreply.github.com>
2026-06-22 10:37:09 +05:30
Chayan DasandBandhan Majumder 7469444aea fix: align confirmation dialog header and footer (#29588)
Signed-off-by: Chayan Das <daschayan8837@gmail.com>
Co-authored-by: Bandhan Majumder <133476557+bandhan-majumder@users.noreply.github.com>
2026-06-19 12:11:40 +05:30
Yash SinghandBandhan Majumder 1599dfd515 fix: zero-pad username suggestion suffix consistently (#29571)
generateUsernameSuggestion built its numeric suffix with
String(rand).padStart(4 - rand.toString().length, "0"). padStart's first
argument is the target total length, not the number of pad characters, so the
expression only padded single-digit numbers: rand=1 became "001" but rand=42
became "42" and rand=999 stayed "999". Suggested usernames therefore had
inconsistent suffix widths, and the magic 4 didn't match the 3-wide output the
existing test pins ("johnny001").

Pull the suffix into a small helper that always pads to 3 digits, so collisions
and the returned value share one definition and every suggestion is uniformly
zero-padded. Add unit tests for the first-attempt path and for two- and
three-digit suffixes; the two-digit case fails on the old code.

Co-authored-by: Bandhan Majumder <133476557+bandhan-majumder@users.noreply.github.com>
2026-06-19 05:37:42 +00:00
ebf696a991 fix: remove console.log and improve type safety in tRPC routers (#29529)
- Remove two console.log statements dumping private hashed link data
  in update.handler.ts (fixes production data leakage)
- Replace console.log(e) with structured logger.error in
  getScheduleByEventTypeSlug.handler.ts
- Fix @ts-expect-error by typing reduce accumulator as
  Record<string, unknown> in update.handler.ts
- Narrow Prisma include to select in duplicate.handler.ts:
  team and webhooks now fetch only required fields

Fixes #29500

Co-authored-by: lucadapice <dapice.lc@gmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Bandhan Majumder <133476557+bandhan-majumder@users.noreply.github.com>
2026-06-19 10:53:23 +05:30
Chayan Das 4e529cbad1 fix: user table to load on scroll (#29593)
* fix: load more users on table scroll

Signed-off-by: Chayan Das <daschayan8837@gmail.com>

* refactor: move user listing logic to UserRepository

Add a dedicated listUsers method with search and cursor pagination support.

Add repository tests covering filtering and pagination.

Ensure user listing metadata remains consistent with the returned results.

Signed-off-by: Chayan Das <daschayan8837@gmail.com>

---------

Signed-off-by: Chayan Das <daschayan8837@gmail.com>
2026-06-18 18:09:12 +00:00
Bryan Varela 561cf889ab fix(daily-webhook): use BookingRepository instead of direct prisma call (#29541) 2026-06-16 12:34:18 +00:00
Anirban SinghaandBandhan Majumder dcd0da831f refactor: use userRepository class methods for signup handlers (#29561)
* refactor: use userRepository class methods for signup handlers

* feat: add user repo modules for DI

* feat: build user repo container

* test: integration test for user repository

* fix: use DI container in selfhosted

* refactor: tests, module, container and handlers

---------

Co-authored-by: Bandhan Majumder <bandhanmajumder16@gmail.com>
2026-06-14 16:11:21 +00:00
Chayan Das 9104545a18 fix(frontend): improve password update form UX and add translation (#29544)
- disable update button until form is valid
- add required field validation
- add translation key for password complexity message

Signed-off-by: Chayan Das <daschayan8837@gmail.com>
2026-06-12 20:12:36 +00:00
MadelynandBandhan Majumder a216f6b785 fix: correct typo 'occured' -> 'occurred' in k_bar_ai_error i18n value (#29478)
* fix: correct typo 'paramater' → 'parameter' in getQueryParam.ts

* fix: correct typo 'occured' -> 'occurred' in k_bar_ai_error i18n value

---------

Co-authored-by: Bandhan Majumder <133476557+bandhan-majumder@users.noreply.github.com>
2026-06-10 09:01:38 +05:30
MAHESH KUMAR JENAandBandhan Majumder d1ad4ea8b2 fix(eventtypes): persist requiresCancellationReason selection (#29282)
Co-authored-by: Bandhan Majumder <133476557+bandhan-majumder@users.noreply.github.com>
2026-06-03 09:51:54 +00:00
ff184db553 fix: correct Arabic translation of upload/download terms (#29226)
* fix(i18n): correct Arabic translation of upload/download terms in ar/common.json

* Apply suggestion from @Copilot

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Bandhan Majumder <133476557+bandhan-majumder@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-06-03 11:55:54 +05:30
MadelynandBandhan Majumder 287cea3001 fix: correct typo 'paramater' → 'parameter' in getQueryParam.ts (#29477)
Co-authored-by: Bandhan Majumder <133476557+bandhan-majumder@users.noreply.github.com>
2026-06-02 18:33:51 +05:30
Bandhan Majumder 717fed8f86 fix(vitest): update to patched version (#29496)
* fix(vitest): update to patched version

* fix(vitest): coverage-v8 and ui dep update to patched version
2026-06-02 17:57:17 +05:30
Mandar Joshi 46eb533dbd chore: tidy up typos across docs, comments, and setup copy (#29260) 2026-05-03 13:45:57 +00:00
Romit d278d6c9bc refactor: remove dead insights references (#29029) 2026-05-01 08:22:35 +05:30
Romit 91341cbba4 cleanup(webhooks): remove instant meeting trigger support (#29022)
* cleanup(webhooks): remove instant meeting trigger support

* remove dead code

* remove instant meeting from prisma enums and related cleanup

* fix(webhooks): make instant meeting enum migration atomic
2026-05-01 08:11:32 +05:30
Prateet Tiwari 1591a50bc5 fix(app-store): normalize search to handle spacing and casing issues (#29236)
- Fixes search mismatch for apps like 'Zoho CRM' vs 'zohocrm'
- Normalizes input by removing spaces, dashes, and underscores
- Updates ZohoCRM display name to 'Zoho CRM' for consistency
- Keeps change minimal without expanding search scope
2026-04-30 15:48:03 +00:00
Romit c2c95b371a cleanup(test): remove org booking integration coverage (#29019) 2026-04-28 17:43:57 +05:30
Romit de1ffb08d6 cleanup(test): remove org admin event type integration coverage (#29016) 2026-04-28 13:18:02 +05:30
Romit 987fe91002 cleanup(test): remove team event type list integration coverage (#29012) 2026-04-27 00:49:24 +05:30
Romit 6a2b84ab02 cleanup(test): remove round robin lucky user integration coverage (#29020) 2026-04-27 00:47:57 +05:30
Romit ca1d86a5a9 cleanup(test): remove membership repository integration coverage (#29013) 2026-04-27 00:47:02 +05:30
Romit 03fc126d79 cleanup(test): remove signup membership integration coverage (#29014) 2026-04-27 00:46:45 +05:30
Romit 9d481454bf cleanup(test): remove team bookings handler integration coverage (#29017) 2026-04-27 00:46:20 +05:30
Romit 84815a9d2f cleanup(test): remove round robin booking repository integration coverage (#29021) 2026-04-27 00:45:43 +05:30
Romit 8b0c3070d1 cleanup(test): remove team host availability integration coverage (#29011) 2026-04-27 00:44:50 +05:30
Romit f3eefc1ffa cleanup(test): remove team-seeded event type integration coverage (#29010) 2026-04-27 00:43:32 +05:30
Akash Moradiyaandakash-moradiya 75bd1b3489 fix(ui): vertical alignment issues (#28944)
Co-authored-by: akash-moradiya <akash.moradiya@smallest.ai>
2026-04-23 10:22:38 +00:00
ee16d1d474 fix: use strict equality in webhook delete handler role check (#28958)
Replaced `==` with `===` for the ADMIN role comparison to follow
TypeScript best practices and match the project's coding conventions.

Co-authored-by: Test User <test@example.com>
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-22 05:38:15 +00:00
Anirban Singha f477f7749c fix: localize hardcoded prefix in reschedule cancellation reason (#28951) 2026-04-22 06:28:31 +05:30
Bandhan Majumder 810ad0edb8 fix: set event type description correctly in the confirmation mail (#28827) 2026-04-20 21:59:41 +05:30
88859e4e31 fix: add deterministic tiebreaker to RR host selection algorithm (#28783)
* fix: add deterministic tiebreaker to RR host selection algorithm

* chore: cleanup comments

* Update packages/features/bookings/lib/getLuckyUser.integration-test.ts

Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>

---------

Co-authored-by: Sahitya Chandra <sahityajb@gmail.com>
Co-authored-by: devin-ai-integration[bot] <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-04-20 21:57:18 +05:30
Pedro Castro 9efd0e652c refactor: render booking additional notes as plain text (#28897) 2026-04-16 14:51:44 +01:00
Pedro Castro 00693bb8f0 fix: enforce 1-5 range on booking rating input (#28898) 2026-04-15 15:42:15 -03:00
Benny Joo ae0079d3e4 fix: Cal.diy followups (#28904)
* fix unit test

* update publisher name

* fix
2026-04-15 13:34:09 +00:00
Benny JooandDevin AI ab21c7f805 refactor: Cal.diy (#28903)
* feat: Cal.diy — community-driven MIT-licensed fork of Cal.com

This squashed commit contains all Cal.diy changes applied on top of calcom/cal.com main:

- Rebrand Cal.com to Cal.diy across the entire codebase
- Remove Enterprise Edition (EE) features, license checks, and AGPL restrictions
- Switch license from AGPL-3.0 to MIT
- Remove docs/ directory (migrated to Nextra at cal.diy)
- Remove dead code: org tests, EE tips, platform nav, premium username, SAML/SSO, etc.
- Clean up .env.example for self-hosted Cal.diy
- Update Docker image references to calcom/cal.diy
- Update README, CONTRIBUTING.md, and issue templates for Cal.diy community fork
- Add PR welcome bot for Cal.diy contributors
- Fix API v2 breaking changes oasdiff ignore entries
- Replace Blacksmith CI runners with default GitHub Actions

3893 files changed, 20789 insertions(+), 411020 deletions(-)

Co-Authored-By: benny@cal.com <sldisek783@gmail.com>

* refactor: remove org-specific /organizations/:orgId endpoints from API v2 atoms controllers (#1701)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* fix: revert Cal.diy Inc to Cal.com, Inc. in license files, copyright notices, and package metadata (#1702)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* rip out org related comments in api v2

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-04-15 09:52:36 -03:00
Pedro Castro a17f28e9ab chore: bump lodash and markdown-it, dedupe minimatch (#28893)
* chore(deps): bump lodash and markdown-it, dedupe minimatch

* chore(deps): bump lodash and lodash-es to 4.18.1
2026-04-14 18:12:16 -03:00
Pedro CastroandBenny Joo fa77692886 chore: bump dependency resolutions (#28889)
* chore(deps): bump dependency resolutions

* chore(deps): dedupe minimatch in yarn.lock

---------

Co-authored-by: Benny Joo <sldisek783@gmail.com>
2026-04-14 19:43:37 +00:00
Pedro Castro 74936a3abe fix: align reassignment query handlers with existing access check pattern (#28876) 2026-04-14 08:48:47 -03:00
Pedro Castro d25130274f fix: scope bulk user deletion to callers organization (#28872) 2026-04-14 08:29:46 -03:00
Pedro Castro cbb234cb35 fix: validate credential ownership in attribute sync update (#28873) 2026-04-14 08:29:26 -03:00
Pedro Castro 51e852f671 refactor: narrow user fields returned by dynamic event endpoint (#28875) 2026-04-14 08:29:10 -03:00
Pedro CastroandSahitya Chandra 053fb56b79 refactor: use named import for authedOrgAdminProcedure in dsync routers (#28877)
Co-authored-by: Sahitya Chandra <sahityajb@gmail.com>
2026-04-14 05:41:25 +00:00
Sahitya Chandra dcbb417aec fix: use Proxy-based CalendarServiceMap mock to prevent test flakes (#28787)
* fix: add vi.mock calls to prevent InstantBookingCreateService test flake

Add two vi.mock() calls ported from cal repo to prevent
'Closing rpc while fetch was pending' errors:

1. Mock @calcom/app-store/calendar.services.generated with a Proxy
   to prevent real calendar modules (feishu, lark) from triggering
   async getAppAccessToken fetch calls during test worker shutdown.

2. Mock @calcom/features/ee/organizations/di/OrganizationRepository.container
   to prevent deep transitive import chain from triggering a Vitest
   module-resolution RPC still in flight at shutdown.

Also removes the narrow feishucalendar mock which is now covered by
the broader calendar.services.generated Proxy mock.

* fix: update bookingScenario to use Proxy-based CalendarServiceMap

Replace the plain-object CalendarServiceMap mock with a Proxy-based
implementation that catches ALL calendar service accesses. This prevents
real calendar modules (feishu, lark, etc.) from being imported during
tests, which was causing 'Closing rpc while fetch was pending' errors
when the Vitest worker shut down.

Also update mockCalendar to use a shared mock map directly instead of
dynamically importing calendar.services.generated, avoiding loading
real calendar service modules during test execution.
2026-04-08 13:17:30 +05:30
Akash SantraandRomit 3c52f57231 fix: prevent negative wait time in rate limit error message (#28765)
Co-authored-by: Romit <85230081+romitg2@users.noreply.github.com>
2026-04-07 18:27:44 +00:00
Mendral AIandMendral Agent 54f36af943 fix(tests): add missing vi.mock() to prevent vitest worker shutdown flake in InstantBookingCreateService (#28773)
Signed-off-by: Mendral Agent <support@mendral.com>
Co-authored-by: Mendral Agent <support@mendral.com>
2026-04-07 18:13:17 +00:00
25857c07e1 feat(bookings): add booking audit logging to instant bookings (#28176)
* feat(bookings): add booking audit logging to instant bookings

wire up BookingEventHandlerService.onBookingCreated in
InstantBookingCreateService to emit audit events, matching the
pattern already used in RegularBookingService and
RecurringBookingService.

* refactor: extract fireBookingEvents and reuse existing orgId

* refactor: derive orgId once and pass to both webhook trigger and audit event

* fix: add missing return in webhook map callback

* refactor: make creationSource required for instant bookings

Both callers (WEBAPP and API_V2) always set creationSource, so validate
it upfront and use CreationSource enum type instead of string | null.

* fix: use ErrorWithCode instead of Error, pass userUuid to audit events

* fix: pass null for hostUserUuid in instant booking audit data

Instant bookings have status AWAITING_HOST with no assigned host,
so the booker's UUID should not be recorded as hostUserUuid.

* fix: address devin review - hostUserUuid and creationSource validation

* fix: address review - bookingMeta, getOrgIdFromMemberOrTeamId, required creationSource

- pass userUuid via bookingMeta instead of separate param (matches RegularBookingService pattern)
- restore getOrgIdFromMemberOrTeamId for proper org resolution instead of eventType.team.parentId
- make creationSource required with runtime validation instead of defaulting to WEBAPP

* fix: enforce creationSource at compile time instead of runtime

use Required<Pick<>> to make creationSource required in the type
signature. removes the runtime check since TypeScript catches
missing creationSource at build time.

* fix: simplify type signature and derive hostUserUuid from booking relation

- Replace Required<Pick<CreateInstantBookingData, 'creationSource'>> with inline { creationSource: CreationSource }
- Include user relation in booking create query to derive hostUserUuid
- Pass newBooking.user?.uuid instead of hardcoding null for userUuid in audit data

Co-Authored-By: hariom@cal.com <hariombalhara@gmail.com>

* chore: trigger CI

* fix: add missing impersonatedByUserUuid to instant booking meta

The CreateBookingMeta type requires impersonatedByUserUuid. Set it to
null for non-impersonated instant bookings.

* fix: show 'awaiting host' in audit log for instant bookings

Use booking status AWAITING_HOST to display "Booked (awaiting host)"
instead of "Booked with Unknown" when no host has accepted yet.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* feat: add booking audit for instant meeting accept via connect-and-join

Extract fireInstantBookingAcceptedAuditEvent to InstantBookingCreateService
and fire it right after the DB update, before side-effect notifications.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

* test: add audit logging tests for instant booking creation

* fix: simulate audit failure in resilience test (identified by cubic)

The test 'should not throw when booking audit event fails' was not
actually simulating an audit failure. Added vi.spyOn on
BookingEventHandlerService.prototype.onBookingCreated to reject with
an error, and assert the spy was called, proving the try/catch in
fireBookingEvents properly catches the error without breaking the
booking flow.

Co-Authored-By: bot_apk <apk@cognition.ai>

* test: add audit event tests for connectAndJoin and fix InstantBooking audit test

* test

---------

Co-authored-by: Hariom Balhara <1780212+hariombalhara@users.noreply.github.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: hariom@cal.com <hariombalhara@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: bot_apk <apk@cognition.ai>
2026-04-04 13:30:03 -03:00