-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
🧑💻 Migrate to Tolgee #976
Conversation
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
WalkthroughThe changes primarily involve a transition from the Changes
TipsChat with CodeRabbit Bot (
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Review Status
Actionable comments generated: 0
Configuration used: CodeRabbit UI
Files ignored due to filter (9)
- apps/builder/package.json
- apps/builder/public/locales/de.json
- apps/builder/public/locales/en.json
- apps/builder/public/locales/fr.json
- apps/builder/public/locales/pt-BR.json
- apps/builder/public/locales/pt.json
- apps/builder/tsconfig.json
- package.json
- pnpm-lock.yaml
Files selected for processing (57)
- .gitignore (1} hunks)
- .tolgeerc (1} hunks)
- .vscode/i18n-ally-custom-framework.yml (1} hunks)
- .vscode/settings.json (1} hunks)
- apps/builder/src/components/ConfirmModal.tsx (3} hunks)
- apps/builder/src/components/UnlockPlanAlertInfo.tsx (2} hunks)
- apps/builder/src/components/logos/WhatsAppLogo.tsx (1} hunks)
- apps/builder/src/features/account/components/ApiTokensList.tsx (5} hunks)
- apps/builder/src/features/account/components/AppearanceRadioGroup.tsx (1} hunks)
- apps/builder/src/features/account/components/CreateTokenModal.tsx (6} hunks)
- apps/builder/src/features/account/components/GraphNavigationRadioGroup.tsx (2} hunks)
- apps/builder/src/features/account/components/MyAccountForm.tsx (2} hunks)
- apps/builder/src/features/account/components/UserPreferencesForm.tsx (4} hunks)
- apps/builder/src/features/analytics/components/AnalyticsGraphContainer.tsx (1} hunks)
- apps/builder/src/features/analytics/components/StatsCards.tsx (2} hunks)
- apps/builder/src/features/auth/components/OnboardingPage.tsx (1} hunks)
- apps/builder/src/features/auth/components/SignInError.tsx (1} hunks)
- apps/builder/src/features/auth/components/SignInForm.tsx (6} hunks)
- apps/builder/src/features/auth/components/SignInPage.tsx (3} hunks)
- apps/builder/src/features/auth/components/SocialLoginButtons.tsx (8} hunks)
- apps/builder/src/features/billing/components/BillingPortalButton.tsx (2} hunks)
- apps/builder/src/features/billing/components/ChangePlanForm.tsx (5} hunks)
- apps/builder/src/features/billing/components/ChangePlanModal.tsx (2} hunks)
- apps/builder/src/features/billing/components/ChatsProTiersModal.tsx (2} hunks)
- apps/builder/src/features/billing/components/CurrentSubscriptionSummary.tsx (2} hunks)
- apps/builder/src/features/billing/components/InvoicesList.tsx (2} hunks)
- apps/builder/src/features/billing/components/PreCheckoutModal.tsx (5} hunks)
- apps/builder/src/features/billing/components/ProPlanPricingCard.tsx (5} hunks)
- apps/builder/src/features/billing/components/StarterPlanPricingCard.tsx (4} hunks)
- apps/builder/src/features/billing/components/UpgradeButton.tsx (2} hunks)
- apps/builder/src/features/billing/components/UsageProgressBars.tsx (4} hunks)
- apps/builder/src/features/blocks/bubbles/audio/components/AudioBubbleForm.tsx (4} hunks)
- apps/builder/src/features/blocks/bubbles/audio/components/AudioBubbleNode.tsx (1} hunks)
- apps/builder/src/features/blocks/bubbles/embed/components/EmbedBubbleContent.tsx (2} hunks)
- apps/builder/src/features/blocks/bubbles/embed/components/EmbedUploadContent.tsx (2} hunks)
- apps/builder/src/features/blocks/bubbles/image/components/ImageBubbleContent.tsx (2} hunks)
- apps/builder/src/features/blocks/bubbles/image/components/ImageBubbleSettings.tsx (4} hunks)
- apps/builder/src/features/blocks/bubbles/textBubble/components/TextBubbleEditor.tsx (4} hunks)
- apps/builder/src/features/blocks/bubbles/video/components/VideoBubbleContent.tsx (2} hunks)
- apps/builder/src/features/blocks/bubbles/video/components/VideoUploadContent.tsx (4} hunks)
- apps/builder/src/features/blocks/integrations/webhook/api/listWebhookBlocks.ts (2} hunks)
- apps/builder/src/features/blocks/logic/jump/components/JumpNodeBody.tsx (2} hunks)
- apps/builder/src/features/blocks/logic/jump/components/JumpSettings.tsx (2} hunks)
- apps/builder/src/features/blocks/logic/typebotLink/components/GroupsDropdown.tsx (2} hunks)
- apps/builder/src/features/collaboration/components/CollaborationMenuButton.tsx (1} hunks)
- apps/builder/src/features/dashboard/components/DashboardHeader.tsx (2} hunks)
- apps/builder/src/features/dashboard/components/DashboardPage.tsx (4} hunks)
- apps/builder/src/features/editor/components/BlockCard.tsx (8} hunks)
- apps/builder/src/features/editor/components/BlockLabel.tsx (1} hunks)
- apps/builder/src/features/editor/components/BlocksSideBar.tsx (6} hunks)
- apps/builder/src/features/editor/components/EditableTypebotName.tsx (3} hunks)
- apps/builder/src/features/editor/components/GettingStartedModal.tsx (7} hunks)
- apps/builder/src/features/editor/components/TypebotHeader.tsx (7} hunks)
- apps/builder/src/features/editor/providers/TypebotProvider.tsx (5} hunks)
- apps/builder/src/features/editor/providers/typebotActions/groups.ts (3} hunks)
- apps/builder/src/features/folders/components/BackButton.tsx (1} hunks)
- apps/builder/src/features/folders/components/CreateBotButton.tsx (2} hunks)
Files not processed due to max files limit (34)
- apps/builder/src/features/folders/components/CreateFolderButton.tsx
- apps/builder/src/features/folders/components/FolderButton.tsx
- apps/builder/src/features/folders/components/FolderContent.tsx
- apps/builder/src/features/folders/components/FolderPage.tsx
- apps/builder/src/features/folders/components/TypebotButton.tsx
- apps/builder/src/features/graph/components/nodes/block/BlockNodeContent.tsx
- apps/builder/src/features/publish/components/PublishButton.tsx
- apps/builder/src/features/publish/components/SharePage.tsx
- apps/builder/src/features/templates/components/CreateNewTypebotButtons.tsx
- apps/builder/src/features/templates/components/ImportTypebotFromFileButton.tsx
- apps/builder/src/features/templates/components/TemplatesModal.tsx
- apps/builder/src/features/theme/components/general/GeneralSettings.tsx
- apps/builder/src/features/workspace/components/AddMemberForm.tsx
- apps/builder/src/features/workspace/components/MemberItem.tsx
- apps/builder/src/features/workspace/components/MembersList.tsx
- apps/builder/src/features/workspace/components/WorkspaceDropdown.tsx
- apps/builder/src/features/workspace/components/WorkspaceSettingsForm.tsx
- apps/builder/src/features/workspace/components/WorkspaceSettingsModal.tsx
- apps/builder/src/lib/tolgee.tsx
- apps/builder/src/locales/de.ts
- apps/builder/src/locales/en.ts
- apps/builder/src/locales/fr.ts
- apps/builder/src/locales/index.ts
- apps/builder/src/locales/pt-BR.ts
- apps/builder/src/locales/pt.ts
- apps/builder/src/pages/_app.tsx
- apps/builder/src/pages/index.tsx
- apps/builder/src/pages/typebots.tsx
- apps/builder/tolgee.d.ts
- apps/viewer/src/pages/api/typebots/[typebotId]/webhookBlocks.ts
- apps/viewer/src/pages/api/typebots/[typebotId]/webhookSteps.ts
- packages/env/env.ts
- packages/lib/results.ts
- packages/lib/utils.ts
Files skipped from review due to trivial changes (53)
- .gitignore
- .tolgeerc
- .vscode/i18n-ally-custom-framework.yml
- .vscode/settings.json
- apps/builder/src/components/ConfirmModal.tsx
- apps/builder/src/components/UnlockPlanAlertInfo.tsx
- apps/builder/src/components/logos/WhatsAppLogo.tsx
- apps/builder/src/features/account/components/ApiTokensList.tsx
- apps/builder/src/features/account/components/AppearanceRadioGroup.tsx
- apps/builder/src/features/account/components/CreateTokenModal.tsx
- apps/builder/src/features/account/components/GraphNavigationRadioGroup.tsx
- apps/builder/src/features/account/components/MyAccountForm.tsx
- apps/builder/src/features/analytics/components/AnalyticsGraphContainer.tsx
- apps/builder/src/features/analytics/components/StatsCards.tsx
- apps/builder/src/features/auth/components/OnboardingPage.tsx
- apps/builder/src/features/auth/components/SignInError.tsx
- apps/builder/src/features/auth/components/SignInPage.tsx
- apps/builder/src/features/auth/components/SocialLoginButtons.tsx
- apps/builder/src/features/billing/components/BillingPortalButton.tsx
- apps/builder/src/features/billing/components/ChangePlanForm.tsx
- apps/builder/src/features/billing/components/ChangePlanModal.tsx
- apps/builder/src/features/billing/components/ChatsProTiersModal.tsx
- apps/builder/src/features/billing/components/CurrentSubscriptionSummary.tsx
- apps/builder/src/features/billing/components/InvoicesList.tsx
- apps/builder/src/features/billing/components/PreCheckoutModal.tsx
- apps/builder/src/features/billing/components/ProPlanPricingCard.tsx
- apps/builder/src/features/billing/components/StarterPlanPricingCard.tsx
- apps/builder/src/features/billing/components/UpgradeButton.tsx
- apps/builder/src/features/billing/components/UsageProgressBars.tsx
- apps/builder/src/features/blocks/bubbles/audio/components/AudioBubbleForm.tsx
- apps/builder/src/features/blocks/bubbles/audio/components/AudioBubbleNode.tsx
- apps/builder/src/features/blocks/bubbles/embed/components/EmbedBubbleContent.tsx
- apps/builder/src/features/blocks/bubbles/embed/components/EmbedUploadContent.tsx
- apps/builder/src/features/blocks/bubbles/image/components/ImageBubbleContent.tsx
- apps/builder/src/features/blocks/bubbles/image/components/ImageBubbleSettings.tsx
- apps/builder/src/features/blocks/bubbles/textBubble/components/TextBubbleEditor.tsx
- apps/builder/src/features/blocks/bubbles/video/components/VideoBubbleContent.tsx
- apps/builder/src/features/blocks/bubbles/video/components/VideoUploadContent.tsx
- apps/builder/src/features/blocks/integrations/webhook/api/listWebhookBlocks.ts
- apps/builder/src/features/blocks/logic/jump/components/JumpNodeBody.tsx
- apps/builder/src/features/blocks/logic/jump/components/JumpSettings.tsx
- apps/builder/src/features/blocks/logic/typebotLink/components/GroupsDropdown.tsx
- apps/builder/src/features/dashboard/components/DashboardPage.tsx
- apps/builder/src/features/editor/components/BlockCard.tsx
- apps/builder/src/features/editor/components/BlockLabel.tsx
- apps/builder/src/features/editor/components/BlocksSideBar.tsx
- apps/builder/src/features/editor/components/EditableTypebotName.tsx
- apps/builder/src/features/editor/components/GettingStartedModal.tsx
- apps/builder/src/features/editor/components/TypebotHeader.tsx
- apps/builder/src/features/editor/providers/TypebotProvider.tsx
- apps/builder/src/features/editor/providers/typebotActions/groups.ts
- apps/builder/src/features/folders/components/BackButton.tsx
- apps/builder/src/features/folders/components/CreateBotButton.tsx
Additional comments: 15
apps/builder/src/features/collaboration/components/CollaborationMenuButton.tsx (1)
- 31-35: The addition of
rootProps={{ style: { transform: 'scale(0)' } }}
to thePopoverContent
component will cause the content to be hidden by scaling it down to zero. This might not be the desired behavior if you want the content to be visible when the popover is triggered. Please verify if this is the intended behavior. If not, you might want to remove or adjust this property.- rootProps={{ style: { transform: 'scale(0)' } }}
apps/builder/src/features/dashboard/components/DashboardHeader.tsx (2)
8-14: The
useScopedI18n
hook has been replaced with theuseTranslate
hook from the@tolgee/react
library. This change is part of the migration to the Tolgee library for localization. Ensure that theuseTranslate
hook is correctly implemented and that all instances ofuseScopedI18n
have been replaced throughout the codebase.53-53: The translation key used with the
t
function from theuseTranslate
hook has been updated. Make sure that the new key'dashboard.header.settingsButton.label'
exists in the localization files and that it correctly corresponds to the intended text.apps/builder/src/features/auth/components/SignInForm.tsx (6)
30-38: The
useScopedI18n
hook is replaced with theuseTranslate
hook from the@tolgee/react
library. Ensure that thet
function returned byuseTranslate
is used correctly throughout the component and that all translation keys are updated to match the new localization system.82-91: The translation keys used in the
showToast
function calls are updated to match the new localization system. Ensure that these keys are defined in the translation files and that they correspond to the correct translations.101-106: The translation keys used in the
Text
andTextLink
components are updated to match the new localization system. Ensure that these keys are defined in the translation files and that they correspond to the correct translations.117-117: The translation key used in the
DividerWithText
component is updated to match the new localization system. Ensure that this key is defined in the translation files and that it corresponds to the correct translation.135-135: The translation key used in the
Button
component is updated to match the new localization system. Ensure that this key is defined in the translation files and that it corresponds to the correct translation.151-152: The translation keys used in the
Text
components are updated to match the new localization system. Ensure that these keys are defined in the translation files and that they correspond to the correct translations.apps/builder/src/features/account/components/UserPreferencesForm.tsx (6)
17-20: The import statements have been updated to use the
useTranslate
anduseTolgee
hooks from the@tolgee/react
library instead of theuseChangeLocale
,useCurrentLocale
, anduseScopedI18n
hooks from the@/locales
directory. This change is in line with the PR's goal of migrating to the Tolgee library for localization. Ensure that the removed hooks are no longer used anywhere else in the codebase.31-35: The
useTolgee
anduseTranslate
hooks are being used to get the current language and translation function, respectively. TheuseRouter
hook is also being used to access the Next.js router, which wasn't used in the old code. This change is part of the migration to the Tolgee library and the use of Next.js's built-in localization support.51-53: The
updateLocale
function has been updated to use the Next.js router'sreplace
method to update the locale in the URL. This is a new feature introduced by the migration to the Tolgee library and the use of Next.js's built-in localization support. Ensure that the router'sreplace
method is used correctly and that the locale is properly updated in the URL.60-67: The
t
function from theuseTranslate
hook is being used to translate the heading text. The current language is obtained from thegetLanguage
method of theuseTolgee
hook and is used to display the current language in the dropdown menu. This is a change from the old code, which used thescopedT
function and thecurrentLocale
variable to achieve the same functionality. Ensure that thet
function and thegetLanguage
method are used correctly and that the translations and current language are displayed correctly.88-90: The
t
function from theuseTranslate
hook is being used to translate the tooltip text. This is a change from the old code, which used thescopedT
function to achieve the same functionality. Ensure that thet
function is used correctly and that the tooltip text is translated correctly.102-104: The
t
function from theuseTranslate
hook is being used to translate the heading text for the graph navigation and appearance sections. This is a change from the old code, which used thescopedT
function to achieve the same functionality. Ensure that thet
function is used correctly and that the heading text is translated correctly.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Review Status
Actionable comments generated: 0
Configuration used: CodeRabbit UI
Files selected for processing (2)
- apps/docs/docs/self-hosting/configuration.md (1} hunks)
- packages/env/env.ts (3} hunks)
Files skipped from review due to trivial changes (1)
- apps/docs/docs/self-hosting/configuration.md
Additional comments: 3
packages/env/env.ts (3)
276-293: The new environment variables
NEXT_PUBLIC_TOLGEE_API_KEY
andNEXT_PUBLIC_TOLGEE_API_URL
are added to thetolgeeEnv
object. TheNEXT_PUBLIC_TOLGEE_API_KEY
is a string and is optional. TheNEXT_PUBLIC_TOLGEE_API_URL
is a URL string, also optional, with a default value of 'https://tolgee.server.baptistearno.com". These variables are then retrieved at runtime using thegetRuntimeVariable
function. This is a good practice as it allows for environment-specific configurations. However, ensure that the default URL is correct and that it is secure to expose this URL and the API key.324-324: The
tolgeeEnv.client
is spread into the client configuration of theenv
object. This is a good practice as it allows for environment-specific configurations.336-336: The
tolgeeEnv.runtimeEnv
is spread into theexperimental__runtimeEnv
configuration of theenv
object. This is a good practice as it allows for environment-specific configurations.
* 🚸 (typebotLink) Make sure variables from child bots are merged if necessary * ⚡ (customDomain) Add configuration modal for domain verification Closes baptisteArno#742 * 🐛 Fix bubble icon file upload * 🚸 (results) Use header id as table accessor to allow duplicate names * 🐛 (payment) Fix postalCode camel case issue Closes baptisteArno#822 * 🐛 (results) Fix result modal content display * ⚡ (whatsapp) Improve WhatsApp preview management Closes baptisteArno#800 * 🛂 (fileUpload) Improve file upload size limit enforcement Closes baptisteArno#799, closes baptisteArno#797 * 📝 Change googleSheets date system var name * ♻️ Export bot-engine code into its own package * ♻️ Remove storage limit related code * 🚑 Fix file upload expiration issue * 🚑 (upload) Fix upload in embed * 📝 Add custom domain troobleshoot section * 👷 (vercel) Increase max execution duration for webhooks * ⚡ (whatsapp) Improve whatsApp management and media collection Closes baptisteArno#796 * 💚 Rename back viewer * 👷 Only build docker images on tag push * ✨ (whatsapp) Add custom session expiration (baptisteArno#842) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ### Summary by CodeRabbit - New Feature: Introduced session expiry timeout for WhatsApp integration, allowing users to set the duration after which a session expires. - New Feature: Added an option to enable/disable the start bot condition in WhatsApp integration settings. - Refactor: Enhanced error handling by throwing specific errors when necessary conditions are not met. - Refactor: Improved UI components like `NumberInput` and `SwitchWithLabel` for better usability. - Bug Fix: Fixed issues related to session resumption and message sending in expired sessions. Now, if a session is expired, a new one will be started instead of attempting to resume the old one. - Chore: Updated various schemas to reflect changes in session management and WhatsApp settings. <!-- end of auto-generated comment: release notes by coderabbit.ai --> * 🚑 (billing) Fix disabled upgrade buttons * ♿ (embed) Add aria-label to bubble button * ⚡ (wordpress) Add query params exclusion support * 🐛 (bot) Fix reactivity issue when filtering single choices Closes baptisteArno#803 * ⚡ Auto continue bot on whatsApp if starting block is input (baptisteArno#849) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ### Summary by CodeRabbit **New Features:** - Added WhatsApp integration feature to the Pro plan. **Refactor:** - Introduced the ability to exclude specific plans from being displayed in the Change Plan Modal. - Renamed the function `isProPlan` to `hasProPerks`, enhancing code readability and maintainability. - Updated the `EmbedButton` component to handle a new `lockTagPlan` property and use the `modal` function instead of the `Modal` component. **Chore:** - Removed the `whatsAppPhoneNumberId` field from the `Typebot` model across various files, simplifying the data structure of the model. <!-- end of auto-generated comment: release notes by coderabbit.ai --> * 🚑 (fileUpload) Fix file upload in linked typebots * ⚡ (setVariable) Add "Environment name" value in Set variable block (baptisteArno#850) Closes baptisteArno#848 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ### Summary by CodeRabbit - New Feature: Added "Environment name" as a new value type in the SetVariable function, allowing users to distinguish between 'web' and 'whatsapp' environments. - Refactor: Simplified session state handling in `resumeWhatsAppFlow.ts` for improved code clarity. - Refactor: Updated `startWhatsAppSession.ts` to include an initial session state with WhatsApp contact and expiry timeout, enhancing session management. - Bug Fix: Improved null handling in `executeSetVariable.ts` for 'Contact name' and 'Phone number', preventing potential issues with falsy values. <!-- end of auto-generated comment: release notes by coderabbit.ai --> * 🛂 Improve editor authorization feedback (baptisteArno#856) Closes baptisteArno#844, closes baptisteArno#839 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ### Summary by CodeRabbit - New Feature: Added a `logOut` function to the user context for improved logout handling. - Refactor: Updated the redirect path in the `SignInForm` component for better user redirection after authentication. - New Feature: Enhanced the "Add" button and "Connect new" menu item in `CredentialsDropdown` with role-based access control. - Refactor: Replaced the `signOut` function with the `logOut` function from the `useUser` hook in `DashboardHeader`. - Bug Fix: Prevented execution of certain code blocks in `TypebotProvider` when `typebotData` is read-only. - Refactor: Optimized the `handleObserver` function in `ResultsTable` with a `useCallback` hook. - Bug Fix: Improved router readiness check in `WorkspaceProvider` to prevent premature execution of certain operations. <!-- end of auto-generated comment: release notes by coderabbit.ai --> * 🚸 Better random IDs generation in setVariable * 🐛 (pixel) Fix multiple Meta pixels tracking Closes baptisteArno#846 * 📝 (whatsapp) Add a "Create WhatsApp app" guide * 🚸 (whatsapp) Improve upgrade plan for whatsapp notice * 🐛 (preview) Fix always displayed start props toast * 🐛 (whatsapp) Fix preview failing to start and wait timeo… * 🚸 (pictureChoice) Improve single picture choice with same titles Closes baptisteArno#859 * 🚸 (pictureChoice) Allow dynamic picture choice with… (baptisteArno#865) … string variables <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ### Summary by CodeRabbit - Refactor: Updated `GoogleSheetsNodeContent` component to use the `options` prop instead of `action`, and integrated the `useTypebot` hook for better functionality. - Style: Improved UI text and layout in `GoogleSheetsSettings.tsx`, enhancing user experience when selecting rows. - Refactor: Simplified rendering logic in `BlockNodeContent.tsx` by directly calling `GoogleSheetsNodeContent` component, improving code readability. - Bug Fix: Enhanced `injectVariableValuesInPictureChoiceBlock` function to handle different types of values for titles, descriptions, and picture sources, fixing issues with variable value injection. <!-- end of auto-generated comment: release notes by coderabbit.ai --> * 🐛 (whatsapp) Fix auto start input where it didn't display next bu… (baptisteArno#869) …bbles <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ### Summary by CodeRabbit **Release Notes** - New Feature: Enhanced WhatsApp integration with improved phone number formatting and session ID generation. - Refactor: Updated the `startWhatsAppPreview` and `receiveMessagePreview` functions for better consistency and readability. - Bug Fix: Added a check for `phoneNumberId` in the `receiveMessage` function to prevent errors when it's undefined. - Documentation: Expanded the WhatsApp integration guide and FAQs in the docs, providing more detailed instructions and addressing common queries. - Chore: Introduced a new `metadata` field in the `whatsAppWebhookRequestBodySchema` to store the `phone_number_id`. <!-- end of auto-generated comment: release notes by coderabbit.ai --> * 🐛 (typebotLink) Fix nested typebot link pop * 📝 (typebotLink) Add instructions about shared variables and merge answers * 🛂 (whatsapp) Remove feature flag Closes baptisteArno#401 * 🚑 (js) Fix dependency issue preventing user to install @typebot.io/js Closes baptisteArno#871 * 🚸 (whatsapp) Improve how the whatsapp preview behaves (baptisteArno#873) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ### Summary by CodeRabbit - New Feature: Updated WhatsApp logo with a new design and color scheme. - New Feature: Added a help button in the UI linking to documentation, enhancing user guidance. - New Feature: Introduced an alert message indicating that the WhatsApp integration is in beta testing. - New Feature: Implemented a button to open WhatsApp Web directly from the application, improving user convenience. - Refactor: Adjusted the retrieval of `contactPhoneNumber` in `receiveMessagePreview` function for better data structure compatibility. - Refactor: Optimized the initialization and management of the WhatsApp session in `startWhatsAppPreview`. - Refactor: Improved the `parseButtonsReply` function by refining condition checks. - Refactor: Enhanced the readability of serialized rich text in `convertRichTextToWhatsAppText` by introducing newline characters. - Bug Fix: Ensured preservation of `contact` information when resuming the WhatsApp flow in `resumeWhatsAppFlow`. <!-- end of auto-generated comment: release notes by coderabbit.ai --> * 📝 Update About page content Closes baptisteArno#757 * 🐛 (builder) Fix system color mode not syncing properly * 🔖 Release v2.18.0 * 🚸 (sendEmail) Rename username SMTP creds label to avoid confusion * 🐳 Bump Postgres version in official docker compose file * 📝 (whatsapp) Re-organize whatsapp overview doc * 📝 (vercel) Add a note on function maxDuration for Hobby plans * 📝 (docker) Update postgres image name * 🚑 (whatsapp) Fix start whatsapp session when user has multiple whatsapp enabled * 🛂 (whatsapp) Disable whatsapp by default on duplication * 🛂 (whatsapp) Set default whatsapp expiry to 4 hours * 🚸 (videoBubble) Reparse variable video URL to correctly detect provider * 🐛 (whatsapp) Fix force create session when flow is completed at first round * 🧑💻 Improve invalid environment variable insight on build fail * 🐳 Remove wait-for-it script to avoid edge cases issues * 🚑 (results) Fix broken infinite scroll * ♻️ (api) Auto start bot if starting with input Closes baptisteArno#877, closes baptisteArno#884 * ✨ Automatically parse markdown from variables in text bubbles Closes baptisteArno#539 * 📝 (whatsapp) Remove private beta mention * 🚑 Fix text styling parsing on variables * 🐛 New sendMessage version for the new parser Make sure old client still communicate with old parser * 🔖 (wordpress) Deploy v3.4.0 * ⬆️ (openai) Replace openai-edge with openai and upgrade next * 🐛 Enable stream again by migrating endpoint to route handler https://vercel.com/docs/functions/edge-functions/streaming#streaming-data-with-edge-functions * 🚸 (openai) Improve streamed message lists CSS * 🔥 Remove streamer Pages API endpoint * 🐛 Add no cache instructions to streamer Attempt to fix buffering issue when Cloudflare proxy is enabled * 💄 Better parsing of lists and code in streaming bubbles * ♻️ Remove sentry client monitoring in viewer * 🚸 (condition) Don't show value in node content if operator is "set" or "empty" * 📝 (embed) Add note about non-embeddable websites * ⬆️ Upgrade sentry and improve its reliability * 🐛 (editor) Fix default branding settings on cre… * 🛂 Sanitize custom CSS and head code to avoid modification of lite badge * 📝 (s3) Add s3 configuration detailed instructions * 🚑 Fix custom CSS sanitization * 🚸 (openai) Improve streaming bubble sequence and visual * 💚 Fix docker build when Sentry not enabled * 🔖 Release v2.18.1 * 🚑 Fix empty bubble issue when plate element does not have a type attribute * 🐛 (openai) Fix 2 openai streaming back to back * 📝 (openai) Add "Multiple OpenAI blocks" video section * ⚡ (video) Allow changing video height when resolved to an iframe * 🐛 Fix link parsing when using variables Closes baptisteArno#764 * 🐛 (textBubble) Fix overflow with long links Closes baptisteArno#764 * 🐛 (videoBubble) Fix youtube parsing for IDs containing a "-" * 🐳 Force Next.js apps local hostname Closes baptisteArno#911 * 🔖 Release v2.18.2 * 🐛 (webhook) Fix webhook response data key number parsing * 📝 Add bounties info in README * ⚡ (billing) Automatic usage-based billing (baptisteArno#924) BREAKING CHANGE: Stripe environment variables simplified. Check out the new configs to adapt your existing system. Closes baptisteArno#906 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ### Summary by CodeRabbit **New Features:** - Introduced a usage-based billing system, providing more flexibility and options for users. - Integrated with Stripe for a smoother and more secure payment process. - Enhanced the user interface with improvements to the billing, workspace, and pricing pages for a more intuitive experience. **Improvements:** - Simplified the billing logic, removing additional chats and yearly billing for a more streamlined user experience. - Updated email notifications to keep users informed about their usage and limits. - Improved pricing and currency formatting for better clarity and understanding. **Testing:** - Updated tests and specifications to ensure the reliability of new features and improvements. **Note:** These changes aim to provide a more flexible and user-friendly billing system, with clearer pricing and improved notifications. Users should find the new system more intuitive and easier to navigate. <!-- end of auto-generated comment: release notes by coderabbit.ai --> * 🚑 (billing) Fix chats pricing tiers incremental flat amou… * 👷 Improve getUsage accuracy in check cron job * 🐛 (results) Lower the max limit in getResults endpoint to avoid payload size error Closes baptisteArno#908 * 💚 Fix send email in CI "React is not defined" * 🐛 Freeze body overflow when opening a Popup embed (baptisteArno#937) fix baptisteArno#763 /claim baptisteArno#763 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ### Summary by CodeRabbit - **Enhancement**: Improved the visibility management of the bot in the popup. This update ensures a smoother and more intuitive user experience when interacting with the bot. - **Bug Fix**: Resolved an issue where certain styles could interfere with the bot's visibility in the popup. The update prioritizes the necessary style settings, ensuring the bot's visibility is maintained as expected, regardless of other conflicting styles. <!-- end of auto-generated comment: release notes by coderabbit.ai --> * 🐛 Fixed pinch zooming mouse issue (with ctrl key) (baptisteArno#940) **Fixed the drastic zoom increase decrease on ctrl + mouse scroll.** The issue was occuring due to the "scale" property in the pinch gesture. The scale was getting bigger values, leading to more zooming. What I did was, made sure that maximum scale difference between current and last value cannot be more than the scaling factor used in zoomin/zoomout buttons. That is. 0.2 Also, the pinch zoom would work as expected. /claim baptisteArno#567 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ### Summary by CodeRabbit - Improvement: Enhanced zoom precision in the Graph component. This update allows for more accurate scaling when adjusting the view in the graph builder. The change ensures that the zoom level adjusts more precisely, providing a smoother and more controlled user experience when interacting with graphs. <!-- end of auto-generated comment: release notes by coderabbit.ai --> * Fix audio content overflow in windows. (baptisteArno#944) /claim baptisteArno#667 The volume slider in audio element in windows chrome overflows. Possible fixes: 1. Change the width of audio blocks. (Not suggested, as the width of all blocks should be consistent) 2. Adjust the audio sub elements, so it doesn't overflow.(IMPLEMENTED) It's not so straightforward to apply customization to audio tag element. The best possible way I could find, to make the app look good, is by hiding the timeline track in the audio. It was showing up very small anyway(due to block width), so there shouldn't be an issue. Please look at the before & after videos below. https://github.com/baptisteArno/typebot.io/assets/29385192/f61c5b58-834d-470f-b684-bd82181e07f4 https://github.com/baptisteArno/typebot.io/assets/29385192/88f932eb-dc7e-4346-bf64-6405a015013e <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ### Summary by CodeRabbit - Style: Improved the visual layout of the audio player on Windows. The update includes a cleaner interface by hiding the track timeline and adjusting the media controls panel. This change enhances the user experience by providing a more streamlined and intuitive audio player design. <!-- end of auto-generated comment: release notes by coderabbit.ai --> * ♻️ Update import contact to brevo script * 👷 Add convenient script for migrating Stripe prices * 🩹 Surround logs saving in a try catch block It seems that in some particular set up the logs saving is failing. * 🚸 (buttons) Trim items content when parsing reply for better consistency Closes baptisteArno#948 * 🔖 Release v2.18.3 * ✏️ Fix popup blocked toast typo * 🧑💻 (whatsapp) Improve whatsapp start log * 🐛 (numberInput) Fix input clearing out on dot or comma press * 🚑 Fix can invite new members in workspace bool Closes baptisteArno#964 * 🔖 Release v2.18.4 * 🐛 Fix graph flickering on high res displays (baptisteArno#959) This PR fixes the flickering and improves the performance so panning around the graph is much smoother than before. https://github.com/baptisteArno/typebot.io/assets/62795688/56b91e20-1eb0-44b5-9a4a-c07525c2ba48 /claim baptisteArno#575 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ### Summary by CodeRabbit - Refactor: Improved the Graph component's scaling calculation for enhanced readability and maintenance. - Style: Updated the Graph component's style properties to ensure better compatibility and visual performance on webkit browsers. These changes aim to enhance the user experience by ensuring the Graph component displays consistently across different web browsers. The refactoring of the scaling calculation also makes the code easier to understand and maintain, potentially leading to quicker updates and bug fixes in the future. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Co-authored-by: Baptiste Arnaud <contact@baptiste-arnaud.fr> * ✏️ Fix manual deployment doc start script typo Closes baptisteArno#969 * 💚 Fix checkAndReportChatsUsage script sending multiple emails at once * 🧑💻 Fix type resolution for @typebot.io/react and nextjs Closes baptisteArno#968 * 🧑💻 Migrate to Tolgee (baptisteArno#976) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ### Summary by CodeRabbit - Refactor: Transitioned to a new translation library (`@tolgee/react`) across the application, enhancing the localization capabilities and consistency. - New Feature: Introduced a JSON configuration file for application settings, improving customization and flexibility. - Refactor: Updated SVG attribute naming convention in the `WhatsAppLogo` component to align with React standards. - Chore: Adjusted the `.gitignore` file and added a new line at the end. - Documentation: Added instructions for setting up environment variables for the Tolgee i18n contribution dev tool, improving the self-hosting configuration guide. - Style: Updated the `CollaborationMenuButton` to hide the `PopoverContent` component by scaling it down to zero. - Refactor: Simplified error handling logic for fetching and updating typebots in `TypebotProvider.tsx`, improving code readability and maintenance. - Refactor: Removed the dependency on the `parseGroupTitle` function, simplifying the code in several components. <!-- end of auto-generated comment: release notes by coderabbit.ai --> * 🐛 Fix group duplicate new title bug * 📝 Add webhook configuration tuto video * 🐛 (number) Fix number input validation with variables * 📝 Add text link section in text bubble doc * ✏️ Fix CORSRules content typo for S3 config * 🐛 Fix formatted message in input block when input is retried * ⚡ Add cache-control header on newly uploaded files * ✏️ (billing) Fix plan name typo * 🚑 Move cache control header into the post policy * 🔖 Release v2.19.0 * 📝 Add UTM params forwarding video tutorial * 📦 Add strict package versioning to avoid incompatibility in workspace * ⬆️ Upgrade Sentry to mitigate security issue https://github.com/getsentry/sentry-javascript/security?mkt_tok=Nzc2LU1KTi01MDEAAAGPNi0ooiOxT0sphdzXd6xHU63d5z5Sc75FNR8cH-6EK-zlvUsUuUqP1YsmnxivxEyXnGZS2cN8XkpuNNGi3NIfoDnwoHci-31tbyJQB8y0Cg * ⚡ (chatwoot) Unmount Typebot embed bubble when opening chatwoot Closes baptisteArno#1007 * 🚑 Fix weird env parsing on Firefox making it crash * 🛂 Update Cache-Control header in generatePresignedPostPolicy * fix: whole page overflowing on the x axis and displaying a horizontal scrollbar (baptisteArno#1011) this PR fixes issue baptisteArno#1008 by making the position of `HandDrawnArrow`'s parent relative, which confines the absolute position of its children to be within the bounds of the parent, causing layout not shift due to `right -30px` <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Updated the layout behavior of the `RealTimeResults` component on the landing page for better user experience. <!-- end of auto-generated comment: release notes by coderabbit.ai --> * ♻️ Introduce typebot v6 with events (baptisteArno#1013) Closes baptisteArno#885 * 🚑 Fix parsing issue with new events field on ongoing session states * 🐛 (import) Fix import typebot files that does not have name field * 🚸 (typebotLink) Make "current" option work like typebot links instead of jump * 🐛 Fix typebot publishing endpoint events parsing * 🐛 Fix default initial items in TableList * 🚑 (editor) Fix move block with outgoing edge * 🚑 (zapier) Fix execute webhook endpoint too strict on block type check * 🐛 (typebotLink) Fix link to first group with start event * 🚑 (webhook) Fix webhook execution with default method * 🐛 (editor) Fix edge delete with undefined groupIndex * 🐛 Sort variables to parse to fix text bubble parsing issue * 🐛 Fix theme background and font default selection * 💄 Fix multi choice checkbox UI on small screens * 📝 Add breaking changes and OpenAI block improvements docs * ⚡ Add more video supports (baptisteArno#1023) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Introduced a new layout option for the TextInput component. - Added support for GUMLET and TIKTOK video content types in VideoBubbleContent. - Enhanced VideoUploadContent to handle new properties like aspectRatio and maxWidth. - Updated VideoBubble to include aspect-ratio and max-width styles based on content properties. - **Refactor** - Changed the extension used for internationalization (i18n) in the VS Code environment. - Modified how environment variables are accessed in tolgee.tsx. - Updated parseVideoUrl function to include a new property videoSizeSuggestion. - **Chores** - Updated the tolgeeEnv object in env.ts and added a new optional parameter to the getRuntimeVariable function. - Expanded video handling capabilities by introducing new video content types and associated regular expressions. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Closes baptisteArno#978 baptisteArno#936 baptisteArno#926 * 🛂 Reduce sendMessage serverless function max memory * 🐛 (webhook) Fix legacy webhook {{state}} body parsing * 🧑💻 (chat) Introduce startChat and continueChat endpoints Closes baptisteArno#1030 * ⏪ Revert new authentication method for preview bot * 📝 Add OpenAI Dialogue option in breaking change doc * ⚡ Add maxWidth and maxHeight bubble them props Closes baptisteArno#458 * 📝 Change community URLs, introduce Discord server Closes baptisteArno#866 * 🐛 (textBubble) Fix variable parsing when starting or finishing by spaces * ⏪ (wordpress) Revert to specific non breaking version for self-hosters * 🐛 (billing) Set invoicing behavior to "always invoice" to fix double payment issue * 🐛 (js) Fix default theme values css variables Closes baptisteArno#1031 * 🐛 (fileUpload) Fix results file display if name contains comma Closes baptisteArno#955 * ⬆️ (date) Upgrade date parser package * 📝 Update Discord invite link * 🚸 Auto scroll once picture choice images are fully loaded * ♿ Show scrollbar on searchable items * 🐛 Fix typebot parsing for legacy columnsWidth setting * 🐛 (wordpress) Fix version mismatch for self-hosters for Standard embed as well Closes baptisteArno#1038 * 🐛 (typebotLink) Fix variables merging with new values * 🐛 (editor) Fix AB test items not connectable * 🔊 Add response debug log for failing requests without errors * 💚 Fix docker build missing ts target in schemas * 🔖 Release v2.19.1 * ✏️ Fix typebot v7 breaking changes doc typo * 🌐 Add es and ro support * ✨ (openai) Add create speech OpenAI action Closes baptisteArno#1025 * 🐛 (chatwoot) Fix email prefill when Chatwoot contact already exist * 🛂 (billing) Add isPastDue field in workspace (baptisteArno#1046) Closes baptisteArno#1039 <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Workspaces now include additional status indicator: `isPastDue`. - New pages for handling workspaces that are past due. Meaning, an invoice is unpaid. - **Bug Fixes** - Fixed issues with workspace status checks and redirections for suspended workspaces. - **Refactor** - Refactored workspace-related API functions to accommodate new status fields. - Improved permission checks for reading and writing typebots based on workspace status. - **Chores** - Database schema updated to include `isPastDue` field for workspaces. - Implemented new webhook event handling for subscription and invoice updates. <!-- end of auto-generated comment: release notes by coderabbit.ai --> * 🚑 (editor) Fix typebot update permission * ✨ Allow user to share a flow publicly and make it duplicatable Closes baptisteArno#360 * 🐛 (pictureChoice) Fix choice parsing too unrestrictive * 🔥 Remove VIEWER_URL_INTERNAL variable BREAKING CHANGE: NEXT_PUBLIC_VIEWER_INTERNAL does not exist anymore as typebot.io now directly points to the viewer project * 🚑 (billing) Fix stripe webhook "invoice.paid" typo * 🐛 Fix processTelemetry endpoint not reachable * ⚡ (billing) Improve past_due workspace checking webhook * 📝 Add new start and continue endpoints in the API runtime instructions * 🚸 (redirect) Make sure the redirection is always done on top frame * 🔧 Increase builder request max size to 4MB * 💚 Update broken action-autotag package * 🚑 (pictureChoice) Fix pic choice multi select parsing * 📝 Improve WP prefilled var explanation * 🐛 Fix default webhook body with multi inputs groups * 🛂 Allow app admin to read a typebot * 🐛 (share) Fix duplicate folderId issue * 🚸 (fileUpload) Properly encode commas from uploaded file urls Closes baptisteArno#955 * ⚡ (wordpress) Add lib_version prop in shortcode Closes baptisteArno#1035 * 📝 Add flow share docs * 🔖 Release v2.20.0 * ⚗️ (docs) Replace Algolia search with Community Search * Updated vercel deployment guide. (baptisteArno#1075) Adding explanation text about builder and viewer. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Documentation** - Enhanced the self-hosting guide with additional explanatory notes on deploying both the Builder and Viewer components for Typebot, clarifying their distinct roles in service flow creation and user interaction. <!-- end of auto-generated comment: release notes by coderabbit.ai --> * 🐛 (editor) Fix old typebot flash when changing the typebot * 🐛 Fix multiple item dragged issue * 🐛 Fix right click in bubble text editor selects the group Closes baptisteArno#920 * ✏️ Fix invalid ending comma in API instructions Closes baptisteArno#1022 * 🧑💻 Automatically guess env URLs for Vercel preview deploy… (baptisteArno#1076) …ments <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Introduced new URL processing logic to enhance compatibility with Vercel preview environments. - Improved handling of environment-specific URLs for authentication and viewer services. - **Enhancements** - Streamlined environment variable management for more reliable deployment configurations. - **Documentation** - Updated documentation to reflect new environment variable processing functions. <!-- end of auto-generated comment: release notes by coderabbit.ai --> * 📝 Add node prerequisite in Contributing guide * 🛂 (billing) Past due status only for unpaid invoices with additional usage * 🚸 (docs) Open community search docs results in same tab * ♻️ Remove references to old s3 URLs * 🔧 Update vercel.json to reflect new api path * 🛂 Hide workspace members list from guest * update typebot * update typebot * 🔧 Update main viewer domain to typebot.co * Delete apps/landing-page/public/favicon.png * Add files via upload * Delete apps/builder/public/favicon.png * Add files via upload * Delete apps/viewer/public/favicon.png * Add files via upload * Add files via upload * Delete apps/builder/public/favicon.png * Add files via upload * Add files via upload * translate * app.chatwoot.com * options.baseUrl * ⚡ Add dynamic timeout to bot engine api * 🐛 (sheets) Init OAuth client inside a function to avoid potential conflict * 🐛 Fix change language not working in the editor * ✨ Introducing Radar, fraud detection * Update publishTypebot.ts * 📝 (docs): fix typo in Unsplash description (baptisteArno#1094) Documentation This PR updates the documentation to fix an incorrect description for the Unsplash configuration. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **Documentation** - Corrected a hyperlink and associated text in the self-hosting configuration guide, changing "Giphy" to "Unsplash" for image search references. <!-- end of auto-generated comment: release notes by coderabbit.ai --> Signed-off-by: Victor Santos <vsantos.py@gmail.com> * 📈 Only send suspicious bot alert if risk level is below 100 * 🛂 Auto ban IP on suspected bot publishing (baptisteArno#1095) <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit - **New Features** - Enhanced sign-in error handling with specific messages for different error types. - Implemented IP-based restrictions for authentication and publishing actions. - **Bug Fixes** - Updated the retrieval of user session information to improve reliability. - **Documentation** - Updated usage instructions for `getServerSession` to reflect the new authentication options. - **Refactor** - Replaced direct usage of `authOptions` with a new function `getAuthOptions` to dynamically generate authentication options. - Improved IP address extraction logic to handle various header formats. - **Chores** - Added a new `BannedIp` model to the database schema for managing IP-based restrictions. <!-- end of auto-generated comment: release notes by coderabbit.ai --> * feat: toolzz logo on sigin and header --------- Signed-off-by: Victor Santos <vsantos.py@gmail.com> Co-authored-by: Baptiste Arnaud <contact@baptiste-arnaud.fr> Co-authored-by: Rishi Raj Jain <rishi18304@iiitd.ac.in> Co-authored-by: Prateek Kalra <prateekkalra1997@gmail.com> Co-authored-by: neo773 <62795688+neo773@users.noreply.github.com> Co-authored-by: onFire(Abhi) <40654066+AbhiShake1@users.noreply.github.com> Co-authored-by: Thiago Mendonça <thiagomendonca09@gmail.com> Co-authored-by: lucasbuges <123869629+lucasbuges@users.noreply.github.com> Co-authored-by: Baptiste Arnaud <baptiste.arnaud95@gmail.com> Co-authored-by: Victor Santos <vsantos.py@gmail.com>
Summary by CodeRabbit
@tolgee/react
) across the application, enhancing the localization capabilities and consistency.WhatsAppLogo
component to align with React standards..gitignore
file and added a new line at the end.CollaborationMenuButton
to hide thePopoverContent
component by scaling it down to zero.TypebotProvider.tsx
, improving code readability and maintenance.parseGroupTitle
function, simplifying the code in several components.