* Add OmniInstall button
* Make AppCards configurable by the app itself
* Make OmniInstallAppButton not redirect
* Fixes
* Add extendsFeature support to CLI
* Move to automatic file generation approach as dynamic import checking doesnt work correctly
* Use zod everywhere consistenly for metadata and fix all TS issues
* Fix viewer.eventTypes endpoint. Make prisma base select and _ prefixed models consistent in expecting scalars only
* Remove unnecessary zod parsing of event-types as it is making the scope of the PR huge
* Fix UI TS errors
* wip
* Add zod types support in EventTypeAppCard.tsx
* Fixes during PR review and other failing tests
* Remove unused app
* Fix stripe installation flow
* More fixes
* Fix apps and active apps count
* self review
* Add loading attribute to OmniInsall button
* Handle empty state
* Improve types
* Fix stripe app installation bug
* added fathom app (#4804)
* added fathom app wrapper, needs script injection to public booking page
* new logo
* Add Fathom script support on booking pages and add it as an eventTypeapp
* Add automation and analytics apps
* Add missing pieces for analytics category
* Rename BookingPageScripts to BookingPageTagManager
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
* Fix lint error
* Fix runtime error with legayAppData being undefined
* Remove duplicate automation key
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* security fix to not add even-types from other users
* throw unauthroized error if a step does not belong to workflow
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* Moved booking logic to calcom/features
Needed to reuse on public API
* Type fixes
* Cleanup
* Cleanup
* Cleanup
* Restored still needed V1 pages
This reverts commit 790a304a6a.
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* Add db relevant stuff
* Basic UI there still buggy
* This UI is hard - some progress
* Fix awful state mangament
* Fix re-ordering
* Working UI logic!
* Partical working minMax function
* Fix min max
* bookingLImits api + tests
* Moved checkBookingLimits to backend only code
* Fix httperror import
* Return busy times
* Remove avaliablity calc
* Working for everything but year
* Remove redundant + fix async forloop
* Add compatible type
* Future proof with evenTypeId filter
* Fix commonjson
* Sorting + validation + tests + passing
* Add empty test
* Move validation check to backend
* Add bookinglimits in trpc
* Add test for undefined
* Apply suggestions from code review
Co-authored-by: Jeroen Reumkens <hello@jeroenreumkens.nl>
* Update apps/web/components/v2/eventtype/EventLimitsTab.tsx
Co-authored-by: Jeroen Reumkens <hello@jeroenreumkens.nl>
* Rename value for eligiability
* Rename keyof type
* status code
* Fix toggle not toggling off
* Update apps/web/pages/v2/event-types/[type]/index.tsx
Co-authored-by: Omar López <zomars@me.com>
* Update apps/web/pages/v2/event-types/[type]/index.tsx
Co-authored-by: Omar López <zomars@me.com>
* Change back to undefined as it is working for sean. See if it fails on testapp
* Fixing test builder
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Jeroen Reumkens <hello@jeroenreumkens.nl>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: Leo Giovanetti <hello@leog.me>
* added badge for unconfirmed bookings
* added link to unconfirmed bookings
* added rounded prop to badge, added unconfirmed badge to botto nav
* Supporting recurring events + bug fix
* Tooltip and hover style
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Leo Giovanetti <hello@leog.me>
* add after event ends workflow trigger to enum
* add after meetings ends trigger
* fix label for time span
* add deleted label for message template
* add lost changes from merge conflict
* set reminder for already existing bookings
* fix label 'How long before event starts/ends'
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
* Add try/catch on workflows while confirming a booking
* Revert "added ?tabName=setup to event-type detail link to give it active status (#4830)"
This reverts commit 11c44db609.
Co-authored-by: Omar López <zomars@me.com>
* revert me later
* let's see if this builds
* fix dupe proc
* fix: v10 works
* fix type error
* fix type error
* fix type errors
* fix more
* add example procedure
* spreading not needed
* Update yarn.lock
* Revert "revert me later"
This reverts commit 0c8c15d057.
Co-authored-by: Chris Bautista <chrisbautista@netflix.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* Animate fields list and routes list
* Rename routing_forms slug to routing-forms
* Add comments
* Fixtypo
* Add dropdown separator for consistency
* Fix missing occurences of routing_forms and improve types for webhooks
* Fix weird error about title child is an array
* Fix webhook issues
* Fix webhook tests and issues found during fixing them
* Fix lint errors and warnings
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
* First commit
* Additional changes to meet designs
* Fixing app details disconnect button
App Store category filtering fixed
* Further changes for the fix
* Progress on various fronts
* Fixing e2e tests
* second try fixing e2e tests
* Yet again trying to fix e2e tests
* Missing action for non-credential flow
* Adding missing Add button
* Final tweaks and fixes
* Missing button in empty screen
* fix border radius
* EmptyScreen for calendar
* Dynamic installed app return page with highlights + other fixes
* Removing unneeded code
* App Store V2 Improvements over feat/v2-installed-apps (#4379)
* Removing unneeded text
* Fixing app details disconnect button and number of apps (#4305)
* V2 Settings Shell - Add Teams Section & UI fixes (#4347)
* Add teams to sidebar and fix UI
* Clean up
* V2 Multi-select (Team Select) (#4324)
* --init
* design improved
* further fine tuning
* more fixes
* removed extra JSX tag
* added story
* NIT
* revert to use of CheckedTeamSelect
* Removes comments
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* fix: toggle alligment (#4361)
* fix: add checked tranform for switch (#4357)
* fixed input size on mobile, fixed settings (#4360)
* fixing type errors
* Mobile fixes
* Tests fixes
Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: zomars <zomars@me.com>
* Feat/team owner booking (#3999)
* WIP: testing queries
* feat: add badge
* fix: get only id
* refactor: get bookings query
* WIP: display attendees added
* fix: add type
* Adds skeleton loader to workflows (#4402)
* fix event types skeleton loader
* fix margin in event types
* fix skeleton loader in bookings
* add skeleton loader for workflow list
* add skeleton loader for editing page
* fix border radius of skeleton loader
* fix mobile view workflow list
* add mobile view for skeleton list
* make multi select full with in mobile view
* mobile view for edit skeleton loader
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
* V2 settings teams (Profil, Members, Appearance View) (#4350)
* add team profile
* first version for team members page
* finish up design of member list item
* fix dialog buttons
* add missing seats and upgrading information
* add v2 dialog for changing role
* finish basic version of member's schedule
* remove modalContainer
* design fixes team profile page
* show only team info to non admins
* allow all member to check availabilities
* make time available heading sticky
* add dropdown for mobile view
* create team appearance view
* finish appearance page
* use settings layout and add danger zone for member
* add fallback logo
* Add teams to sidebar and fix UI
* add team invitations
* Clean up
* code clean up
* add impersontation and disable autofocus on calendar
* improve team info
* refactor teaminvitelist code and fix leaving a team
* add team pages to settings shell
* add link to create new team
* small fixes
* clean up comments
* V2 Multi-select (Team Select) (#4324)
* --init
* design improved
* further fine tuning
* more fixes
* removed extra JSX tag
* added story
* NIT
* revert to use of CheckedTeamSelect
* Removes comments
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* fix: toggle alligment (#4361)
* fix: add checked tranform for switch (#4357)
* fixed input size on mobile, fixed settings (#4360)
* fix image uploader button in safari
* code clean up
* fixing type errors
* Moved v2 team components to features
Adds deprecation notices
* Update SettingsLayout.tsx
* Migrated to features and build fixes
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: zomars <zomars@me.com>
* add rainbowkit form to v2 event-types (#4349)
Co-authored-by: Omar López <zomars@me.com>
* v1.9.5
* Fix/daterangepicker css (#4418)
* added styles from external stylesheet
* fixed a border color
* codacy improvements
* more codacy fix
* codacy why u be so dumb
* dynamic import rainbow (only if installed) (#4409)
* Tidyup app cards (#4428)
* Moving API to trpc query
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: zomars <zomars@me.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
Co-authored-by: hexcowboy <accounts@cowboy.dev>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
* Abstracting one level the redirectUrl for apps
* Moving enum to a better/working place
* Another try
* Missing code
* Correcting categories look in apps page
* ui tweaks
* Breadcrumb wrong font-weight
* Toast is v1 component and copy updated
* Fix TS error
* Fix TS error
* Update AppsLayout.tsx
* Update InstalledAppsLayout.tsx
* translations and disconnect button with icon
* Reverting file
* Test e2e fix on app-store
* Missing testid in button
* Fix to click categories that are visible
* Going directly to category page as a patch
* Fixing stripe e2e test
* Disconnect is now empty with icon
* Disabled stripe test for now as the navigation is completely changed
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Carina Wollendorfer <30310907+CarinaWolli@users.noreply.github.com>
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
Co-authored-by: hexcowboy <accounts@cowboy.dev>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
* Revamped Schedule before type fixes
* Removed t('copy_all'); fake focus state on CopyButton open
* Added skeletons, availability single view (wip, still a bit glitchy)
* Fixed isDefault switch glitchiness
* Fixes changing the default schedule to the created schedule
* Fix some type errors, on create set availability to DEFAULT_SCHEDULE
* Provided missing translation for copy_times_to
* Fix type errors, this may not be possible until v8 RHF
* Fix lint error
* Some responsiveness fixes
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
* add team profile
* first version for team members page
* finish up design of member list item
* fix dialog buttons
* add missing seats and upgrading information
* add v2 dialog for changing role
* finish basic version of member's schedule
* remove modalContainer
* design fixes team profile page
* show only team info to non admins
* allow all member to check availabilities
* make time available heading sticky
* add dropdown for mobile view
* create team appearance view
* finish appearance page
* use settings layout and add danger zone for member
* add fallback logo
* Add teams to sidebar and fix UI
* add team invitations
* Clean up
* code clean up
* add impersontation and disable autofocus on calendar
* improve team info
* refactor teaminvitelist code and fix leaving a team
* add team pages to settings shell
* add link to create new team
* small fixes
* clean up comments
* V2 Multi-select (Team Select) (#4324)
* --init
* design improved
* further fine tuning
* more fixes
* removed extra JSX tag
* added story
* NIT
* revert to use of CheckedTeamSelect
* Removes comments
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* fix: toggle alligment (#4361)
* fix: add checked tranform for switch (#4357)
* fixed input size on mobile, fixed settings (#4360)
* fix image uploader button in safari
* code clean up
* fixing type errors
* Moved v2 team components to features
Adds deprecation notices
* Update SettingsLayout.tsx
* Migrated to features and build fixes
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Joe Au-Yeung <j.auyeung419@gmail.com>
Co-authored-by: Syed Ali Shahbaz <52925846+alishaz-polymath@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: zomars <zomars@me.com>
* [WIP] New design and components for onboarding page
* saving work in progress
* new fonts
* [WIP] new onboarding page, initial page, components
* WIP calendar connect
* WIP availability new design
* WIP onboarding page
* WIP onboarding, working new availability form
* WIP AvailabilitySchedule componente v2
* WIP availability with defaultSchedule
* User profile view
* Relocate new onboarding/getting-started page components
* Steps test for onboarding v2
* Remove logs and unused code
* remove any as types
* Adding translations
* Fixes translation text and css for step 4
* Deprecation note for old-getting-started
* Added defaul events and refetch user query when finishing getting-started
* Fix button text translation
* Undo schedule v1 changes
* Fix calendar switches state
* Add cookie to save return-to when connecting calendar
* Change useTranslation for useLocale instead
* Change test to work with data-testid instead of hardcoded plain text due to translation
* Fix skeleton containers for calendars
* Style fixes
* fix styles to match v2
* Fix styles and props types to match v2 design
* Bugfix/router and console errors (#4206)
* The loading={boolean} parameter is required, so this must be <Button />
* Fixes duplicate key error
* Use zod and router.query.step directly to power state machine
* use ul>li & divide for borders
* Update apps/web/components/getting-started/steps-views/ConnectCalendars.tsx
Co-authored-by: alannnc <alannnc@gmail.com>
* Linting
* Deprecation notices and type fixes
* Update CreateEventsOnCalendarSelect.tsx
* Type fixes
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: zomars <zomars@me.com>
* Fix breadcrumb colors
* HorizontalTabs
* Team List Item WIP
* Horizontal Tabs
* Cards
* Remove team list item WIP
* Login Page
* Add welcome back i118n
* EventType page work
* Update EventType Icons
* WIP Availability
* Horizontal Tab Work
* Add build command for in root
* Update build DIr/command
* Add Edit Button + change buttons to v2
* Availablitiy page
* Fix IPAD
* Make mobile look a little nicer
* WIP bookingshell
* Remove list items from breaking build
* Mian bulk of Booking Page.
* Few updates to components
* Fix chormatic feedback
* Fix banner
* Fix Empty Screen
* Text area + embded window fixes
* Semi fix avatar
* Troubleshoot container + Active on count
* Improve mobile
* NITS
* Fix padding on input
* Fix icons
* Starting to move event types settings to tabs
* Begin migration to single page form
* Single page tabs
* Limits Page
* Advanced tab
* Add RHF to dependancies
* Most of advanced tab
* Solved RHF mismtach
* Build fixes
* RHF conditionals fixes
* Improved legibility
* Major refactor/organisation into optional V2 UI
* Portal EditLocationModal
* Fix dialoug form
* Update imports
* Auto Animate + custom inputs WIP
* Custom Inputs
* WIP Apps
* Fixing stories imports
* Stripe app
* Remove duplicate dialog
* Remove duplicate dialog
* add Test action button + UI improvements
* add test action functionality
* Fix embed URL
* Fix app toggles + number of active apps
* Fix container padding on disabledBorder prop
* Removes strict
* add confirmation dialog before sending SMS
* code clean up
* show error message if test action fails
* disable test action button in edit mode
* fixes SMS testing
* use updated values
* fix wrongly updated data in useEffect
* fix typo
* code clean up
* EventType Team page WIP
* Fix embed
* NIT
* Add Darkmode gray color
* V2 Shell WIP
* setup folders for v2
* add lost translations from merge
* add all files to v2 + redesign /workflows
* use custom template as default template
* add first version of v2 for workflow editing page
* Fix headings on shell V2
* Fix mobile layout with V2 shell
* V2 create event type button
* Checked Team Select
* Hidden to happen on save - not on toggle
* Team Attendee Select animation
* Fix scheduling type and remove multi select label
* Fix overflow on teams url
* use fi icon for down arrow
* add v2 shell
* add trigger badge
* Even Type move order handles
* fix save button
* enable editing of workflow name
* improve delete workflow functionality
* adjust empty screen
* make trigger start with uppercase
* change trash icon
* Fix Embed TS errors
* Fix TS errors
* Fix Eslint errors
* Fix TS errors for UI
* Fix ESLINT error
* create component for time and timeUnit input/dropdown
* add workflows to v2 early access middleware
* fix type issues
* added SidebarCard for promo to v2 and storybook (#3906)
Co-authored-by: Julian Benegas <julianbenegas99@gmail.com>
Co-authored-by: Alan <alannnc@gmail.com>
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
* Tooltip Provider - Wrapper due to dep upgrade
* public event type list darkmode
* V2 Color changes to public booking
* adjust delete and edit button
* create custom empty screen for worklows
* add workflow examples to empty page
* add loading state to button when creating first workflow
* Show action as workflow name when no name exists
* if no input leave name empty when updating workflow
* use reminder template when creating workflow
* improve time unit dropdown
* Remove unused component
* Fix typecheck
* add loading state to new workflow button
* add label before action dropdown
* fixing badges in worflow list
* use lighter color for untitled workflows
* fix not showing nr of active eventtypes in workflow list
* add workflows to event types
* implement v2 desing for AddActionDialog
* improve phone input
* rounded borders for phoneInput in add action dialog
* improve message input
* fix mobile view for editing page
* use md breakpoint for mobile view
* finish workflows in event type settings
* code cleanup
* code cleanup
* fix bug in testing workflow action
* add v2 design for addition inputs as variables dialog
* add V2 design for add variable dropdown
* add notification icons to trigger badge
* improve mobile version of workflows in eventtypes
* remove ring from time before input
* fix bug when workflow has no steps
* Final UI improvements/fixes
* code clean-up
* code clean-up
* code clean-up
* use v2 design for license required
* fix translation issues
* fix adding variables in different language in old design
* limit for pro users only for now
* fix import
* fix mobile view for empty screen
* ues destructive button color for deleting workfow
* remove padding at button of creation dialog
* V2 Settings - Security View (#4018)
* Create change password screen
* Add two factor auth screen
* Add two factor auth screen
* Remove header file
* Updates middleware and rewrites
* Adds Meta component to handle layout headings/metadata (#4021)
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
Co-authored-by: zomars <zomars@me.com>
* fix: rate limit auth (#3820)
* fix: rate limit auth
* fix: replace lru-cache w memory-cache
* remove comments
* fix: yarn.lock
* fix: remove changes yarn lock
* fix: add missing EOL empty liune
* fix: move rate limiter so it kicks the last, limit to 10 tries per minute
* fix: move limiter w rest of code
* test: trying fix onboardong
* fix: undo changes in globalSetup.ts
* test: fix disable login for onboarding
* fix: use username instead of email for token check
* fix: tests
* fix: don't run on test
* fix: add missing comma
* fix: remove uniqueTokenPerInterval
* fix: add errorcode to packages lib auth
* Update packages/lib/rateLimit.ts
fix: improve readability
Co-authored-by: Omar López <zomars@me.com>
* Update packages/lib/rateLimit.ts
fix: no unnecessary any
Co-authored-by: Omar López <zomars@me.com>
* Update packages/lib/rateLimit.ts
fix: improve readability
Co-authored-by: Omar López <zomars@me.com>
* fix: rename interval -> intervalInMs
* fix: check user.email not username which could be empty
* fix: rateLimit update all naming
Co-authored-by: Agusti Fernandez Pardo <git@agusti.me>
Co-authored-by: Omar López <zomars@me.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* Adds deprecation comments
Co-authored-by: sean-brydon <55134778+sean-brydon@users.noreply.github.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
Co-authored-by: zomars <zomars@me.com>
Co-authored-by: CarinaWolli <wollencarina@gmail.com>
Co-authored-by: Hariom Balhara <hariombalhara@gmail.com>
Co-authored-by: Julian Benegas <julianbenegas99@gmail.com>
Co-authored-by: Alan <alannnc@gmail.com>
Co-authored-by: kodiakhq[bot] <49736102+kodiakhq[bot]@users.noreply.github.com>
Co-authored-by: Joe Au-Yeung <65426560+joeauyeung@users.noreply.github.com>
Co-authored-by: Agusti Fernandez Pardo <6601142+agustif@users.noreply.github.com>
Co-authored-by: Agusti Fernandez Pardo <git@agusti.me>
* WIP
* Fix for team availability with time offsets
* Prevent empty schedule from opening up everything
* When no utcOffset or timeZone's are given, default to 0 utcOffset (UTC)
* timeZone should not be part of getUserAvailability
* Prevents {days:[X],startTime:0,endTime:0} error entry
* Added getAggregateWorkingHours() (#3913)
* Added test for getAggregateWorkingHours
* Timezone isn't used here anymore
* fix: developer docs url (#3914)
* fix: developer docs url added
* chore : remove /
* chore : import url
Co-authored-by: Zach Waterfield <zlwaterfield@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>
* Test fixes
* Reinstate prisma (generate only) and few comments
* Test fixes
* Skipping getSchedule again
* Added await to expect() as it involves async logic causing the promise to timeout
* Test cleanup
* Update jest.config.ts
Co-authored-by: Alan <alannnc@gmail.com>
Co-authored-by: Alex van Andel <me@alexvanandel.com>
Co-authored-by: Udit Takkar <53316345+Udit-takkar@users.noreply.github.com>
Co-authored-by: Zach Waterfield <zlwaterfield@gmail.com>
Co-authored-by: Peer Richelsen <peeroke@gmail.com>