Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 45 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,51 @@ All notable changes to the **Crove Cal** platform will be documented in this fil

---

## [2.2.0] - 2026-09-03

### Added
- **DOS.Me Organization -> Teams Hierarchy & Zero-Latency JIT Token Claims**:
- Adopted new JWT token claims structure with `claims.organizations`, `claims.teams`, and `claims.active_org_id`.
- Automatic sub-team hierarchy provisioning (`parentId` mapping from `dosTeamId` to parent `dosOrgId`).
- Automatic role mapping from SSO (`LEAD` and `ADMIN` map to Cal.com `MembershipRole.ADMIN`).
- Real-time webhook handlers for `team.created`, `team.updated`, `team.deleted`, `team.member_added`, `team.member_removed`.
- **Webhook Health & Realtime Monitoring**:
- Implemented `@calcom/lib/webhookMonitor` service tracking latency, success rates, event volumes, and delivery audit logs in an in-memory telemetry buffer.
- Added public `/api/webhooks/health` API endpoint supporting GET metrics and POST simulated test pings.
- Added dedicated Webhook Health & Monitoring Dashboard UI at `/settings/developer/webhooks/monitoring` with live auto-refresh.
- **Crove CRM Direct Integration (`crm.crove.com`)**:
- Added `@calcom/features/crove-crm` (`CroveCrmService`) for contact upsertion and booking activity timeline synchronization with Team/Org attribution.
- Added `/api/webhooks/crove-crm` webhook bridge endpoint.
- Registered native **Crove CRM** app card (`@calcom/crovecrm`) in the Cal.com App Store under the CRM category (`/apps/categories/crm`) with full `CrmServiceMap` integration.
- **Deep Database Health Check Endpoint**:
- Implemented `/api/health` probe endpoint returning DB connectivity, latency in milliseconds, uptime, and application version for container orchestration and uptime monitors.

### Optimized & Fixed
- Removed unused `@ts-expect-error` in `useRouterQuery.ts` for clean ES2024 native `entries` iteration.
- Guarded `husky install` in Docker build stages when `.git` is absent.
- Guarded `required` jobs in `.github/workflows/pr.yml` and `all-checks.yml` (`if: github.repository == 'calcom/cal.diy'`), permanently eliminating failed notification emails on the repository fork.

---

## [2.1.0] - 2026-09-01

### Added
- **TypeScript 6.0.3 Monorepo Upgrade**:
- Upgraded `typescript` to `6.0.3` across all 115 packages and applications in the Turborepo monorepo.
- Modernized compiler targets to `ES2024` / `ES2022` in `packages/tsconfig/base.json`, `nextjs.json`, and package-level configurations.
- Added `docs/TypeScript-7-Migration-Roadmap.md` with technical audit and migration plan for future TypeScript 7.x release.
- **Clean-Room Multi-Tenant Teams & Organizations**:
- Implemented `TeamService` and `OrganizationService` in `packages/features/teams` and `packages/features/organizations`.
- Added viewer tRPC routers `viewer.teams` and `viewer.organizations`.
- Added `/teams` frontend listing view with department creation dialog.
- **Universal Crove App Switcher**:
- Implemented `<CroveAppSwitcher />` component in `@calcom/ui` with comprehensive ecosystem directory (Crove Suite & DOS Ecosystem apps).
- Integrated App Switcher into `TopNav.tsx` and `SideBar.tsx`.
- **Expanded E2E Playwright Test Suite**:
- Added comprehensive E2E tests for DOS ID login, App Switcher, multi-tenant page protections, and webhook health checks.

---

## [2.0.0] - 2026-08-26

### Added
Expand Down
29 changes: 29 additions & 0 deletions apps/web/app/(use-page-wrapper)/(main-nav)/workflows/page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import { _generateMetadata } from "app/_utils";
import { cookies, headers } from "next/headers";
import { redirect } from "next/navigation";

import { getServerSession } from "@calcom/features/auth/lib/getServerSession";
import { APP_NAME } from "@calcom/lib/constants";
import { buildLegacyRequest } from "@lib/buildLegacyCtx";

import { WorkflowsListingView } from "~/workflows/views/workflows-listing-view";

export const generateMetadata = async () =>
await _generateMetadata(
(t) => "Workflows",
(t) => `Automate meeting email/SMS reminders and follow-up notifications in ${APP_NAME}`,
undefined,
undefined,
"/workflows"
);

const WorkflowsPage = async () => {
const session = await getServerSession({ req: buildLegacyRequest(await headers(), await cookies()) });
if (!session?.user?.id) {
redirect("/auth/login");
}

return <WorkflowsListingView />;
};

export default WorkflowsPage;
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,9 @@ const EventAvailabilityTab = dynamic(() =>
import("./tabs/availability/EventAvailabilityTabWebWrapper").then((mod) => mod)
);

const EventTeamAssignmentTab = dynamic(() => Promise.resolve((_props: Record<string, unknown>) => null));
const EventTeamAssignmentTab = dynamic(() =>
import("./tabs/team/EventTeamAssignmentTabWebWrapper").then((mod) => mod)
);

const EventLimitsTab = dynamic(() => import("./tabs/limits/EventLimitsTabWebWrapper").then((mod) => mod));

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
"use client";

import type { EventTypeSetupProps } from "@calcom/features/eventtypes/lib/types";
import { EventTeamTab, type GenericTeamMember } from "./EventTeamTab";

export interface EventTeamAssignmentTabWebWrapperProps {
eventType: EventTypeSetupProps["eventType"];
team: EventTypeSetupProps["team"];
teamMembers: GenericTeamMember[];
orgId?: number | null;
}

export function EventTeamAssignmentTabWebWrapper({
eventType,
team,
teamMembers,
orgId,
}: EventTeamAssignmentTabWebWrapperProps) {
return (
<EventTeamTab
eventType={eventType}
team={team}
teamMembers={teamMembers}
orgId={orgId}
/>
);
}

export default EventTeamAssignmentTabWebWrapper;
Loading