diff --git a/.github/workflows/dev-deploy-vercel-dashboard.yml b/.github/workflows/dev-deploy-vercel-dashboard.yml index af0985b39..29a72d411 100644 --- a/.github/workflows/dev-deploy-vercel-dashboard.yml +++ b/.github/workflows/dev-deploy-vercel-dashboard.yml @@ -58,6 +58,27 @@ jobs: - name: Build Project Artifacts run: vercel build --target=staging --token=${{ secrets.VERCEL_TOKEN }} working-directory: echo/frontend + env: + POSTHOG_SOURCEMAPS: "1" + + # Best-effort: symbolication is a nice-to-have, so a PostHog outage must + # never block a deploy. The cleanup step below always strips maps from + # the bundle, so nothing leaks even if upload fails. + - name: Upload source maps to PostHog + continue-on-error: true + working-directory: echo/frontend + env: + POSTHOG_CLI_HOST: https://eu.posthog.com + POSTHOG_CLI_PROJECT_ID: "197841" + POSTHOG_CLI_API_KEY: ${{ secrets.POSTHOG_CLI_API_KEY }} + run: | + pnpm dlx @posthog/cli@0.16.0 sourcemap inject --directory .vercel/output/static + pnpm dlx @posthog/cli@0.16.0 sourcemap upload --directory .vercel/output/static + + - name: Remove source maps from deploy bundle + if: always() + working-directory: echo/frontend + run: find .vercel/output/static -name '*.map' -type f -delete || true - name: Deploy Project Artifacts to Vercel run: vercel deploy --prebuilt --target=staging --token=${{ secrets.VERCEL_TOKEN }} diff --git a/.github/workflows/prod-deploy-vercel-dashboard.yml b/.github/workflows/prod-deploy-vercel-dashboard.yml index c4947f5e4..d45e6a337 100644 --- a/.github/workflows/prod-deploy-vercel-dashboard.yml +++ b/.github/workflows/prod-deploy-vercel-dashboard.yml @@ -60,6 +60,27 @@ jobs: - name: Build Project Artifacts run: vercel build --prod --token=${{ secrets.VERCEL_TOKEN }} working-directory: echo/frontend + env: + POSTHOG_SOURCEMAPS: "1" + + # Best-effort: symbolication is a nice-to-have, so a PostHog outage must + # never block a release. The cleanup step below always strips maps from + # the bundle, so nothing leaks even if upload fails. + - name: Upload source maps to PostHog + continue-on-error: true + working-directory: echo/frontend + env: + POSTHOG_CLI_HOST: https://eu.posthog.com + POSTHOG_CLI_PROJECT_ID: "160282" + POSTHOG_CLI_API_KEY: ${{ secrets.POSTHOG_CLI_API_KEY }} + run: | + pnpm dlx @posthog/cli@0.16.0 sourcemap inject --directory .vercel/output/static + pnpm dlx @posthog/cli@0.16.0 sourcemap upload --directory .vercel/output/static + + - name: Remove source maps from deploy bundle + if: always() + working-directory: echo/frontend + run: find .vercel/output/static -name '*.map' -type f -delete || true - name: Deploy Project Artifacts to Vercel run: vercel deploy --prebuilt --prod --token=${{ secrets.VERCEL_TOKEN }} diff --git a/echo/frontend/AGENTS.md b/echo/frontend/AGENTS.md index 8e038b506..caebc311b 100644 --- a/echo/frontend/AGENTS.md +++ b/echo/frontend/AGENTS.md @@ -58,7 +58,8 @@ PostHog is the only analytics tool (Plausible was migrated and removed). Pagevie - Grep for `posthog.capture(` to see the live event set; auth, project, chat, report, conversation, and workspace-request flows are covered - Dashboard + insights live in the PostHog EU projects (production id 160282, echo-next id 197841). Don't add new dashboards from code; wire the event and let analytics own the visualization - Insights, cohorts, and other PostHog artifacts must always be created in both projects (echo production and echo-next), never just one -- One-off error reports use `posthog.captureException`, not a capture event (see `ErrorBoundary`, participant audio interruption) +- One-off error reports use `posthog.captureException`, not a capture event (see `ErrorBoundary`, participant audio interruption). Don't report expected server rejections: a handled 4xx already shown to the user as a toast just churns error tracking. See `captureUnexpectedError` in `src/components/conversation/hooks/index.ts` (reports only 5xx, network, and non-Axios errors) +- Source maps upload to PostHog during the dashboard deploy, so minified frames symbolicate and issue fingerprints stay stable across deploys. `vite build` emits maps only when `POSTHOG_SOURCEMAPS=1` (set by the deploy workflows); the workflow injects and uploads via `@posthog/cli`, then strips the maps from the bundle. Needs the `POSTHOG_CLI_API_KEY` repo secret (personal API key, `error_tracking:write` scope) ## Modal conventions diff --git a/echo/frontend/src/components/conversation/hooks/index.ts b/echo/frontend/src/components/conversation/hooks/index.ts index eb3fb0633..dbe29790a 100644 --- a/echo/frontend/src/components/conversation/hooks/index.ts +++ b/echo/frontend/src/components/conversation/hooks/index.ts @@ -25,6 +25,21 @@ import { } from "@/lib/api"; import { bff } from "@/lib/bff"; +// The chat-context mutations already tell the user what went wrong. The server +// answers expected rejections (conversation already attached, too long, or over +// the context budget) with a 4xx and a `detail` string that the onError handlers +// show as a toast. Filing those as exceptions only floods error-tracking triage. +// Report only failures we cannot explain to the user: 5xx responses, network +// errors, and non-Axios errors. +const captureUnexpectedError = (error: unknown) => { + const status = + error instanceof AxiosError ? error.response?.status : undefined; + if (status !== undefined && status >= 400 && status < 500) { + return; + } + posthog.captureException(error); +}; + type ConversationBffListParams = { search_text?: string; sort?: @@ -276,7 +291,7 @@ export const useAddChatContextMutation = () => { }), mutationKey: ["chat-context", "add"], onError: (error, variables, context) => { - posthog.captureException(error); + captureUnexpectedError(error); const mutationContext = context as | AddChatContextMutationContext | undefined; @@ -387,7 +402,7 @@ export const useDeleteChatContextMutation = () => { deleteChatContext(payload.chatId, payload.conversationId), mutationKey: ["chat-context", "delete"], onError: (error, variables, context) => { - posthog.captureException(error); + captureUnexpectedError(error); // Only rollback the failed optimistic entry const conversationId = (context as { conversationId?: string }) ?.conversationId; @@ -517,7 +532,7 @@ export const useClearChatContextMutation = () => { }, mutationKey: ["chat-context", "clear"], onError: (error) => { - posthog.captureException(error); + captureUnexpectedError(error); toast.error(t`Failed to clear conversations`); }, onSettled: (_, __, variables) => { @@ -531,7 +546,7 @@ export const useClearChatContextMutation = () => { return; } for (const failure of failed) { - posthog.captureException(failure.reason); + captureUnexpectedError(failure.reason); } if (cleared === 0) { toast.error(t`Failed to clear conversations`); diff --git a/echo/frontend/src/locales/cs-CZ.po b/echo/frontend/src/locales/cs-CZ.po index 51831643a..2ac1c55a0 100644 --- a/echo/frontend/src/locales/cs-CZ.po +++ b/echo/frontend/src/locales/cs-CZ.po @@ -2353,7 +2353,7 @@ msgstr "Clear filters" msgid "Clear search" msgstr "Clear search" -#: src/components/conversation/hooks/index.ts:540 +#: src/components/conversation/hooks/index.ts:555 msgid "Cleared {cleared} of {total} conversations" msgstr "" @@ -2605,7 +2605,7 @@ msgstr "conversation" msgid "Conversation" msgstr "Conversation" -#: src/components/conversation/hooks/index.ts:378 +#: src/components/conversation/hooks/index.ts:393 msgid "Conversation added to chat" msgstr "Conversation added to chat" @@ -2614,7 +2614,7 @@ msgstr "Conversation added to chat" msgid "participant.conversation.ended" msgstr "Conversation Ended" -#: src/components/conversation/hooks/index.ts:494 +#: src/components/conversation/hooks/index.ts:509 msgid "Conversation removed from chat" msgstr "Conversation removed from chat" @@ -2645,7 +2645,7 @@ msgstr "conversations" msgid "Conversations" msgstr "Conversations" -#: src/components/conversation/hooks/index.ts:530 +#: src/components/conversation/hooks/index.ts:545 msgid "Conversations cleared" msgstr "" @@ -4089,12 +4089,12 @@ msgstr "" msgid "Failed" msgstr "Failed" -#: src/components/conversation/hooks/index.ts:313 +#: src/components/conversation/hooks/index.ts:328 msgid "Failed to add conversation to chat" msgstr "Failed to add conversation to chat" #. placeholder {0}: error.response?.data?.detail ? `: ${error.response.data.detail}` : "" -#: src/components/conversation/hooks/index.ts:308 +#: src/components/conversation/hooks/index.ts:323 msgid "Failed to add conversation to chat{0}" msgstr "Failed to add conversation to chat{0}" @@ -4108,8 +4108,8 @@ msgstr "Failed to add conversations to context" msgid "Failed to approve outcome. Please try again." msgstr "Failed to approve outcome. Please try again." -#: src/components/conversation/hooks/index.ts:521 -#: src/components/conversation/hooks/index.ts:537 +#: src/components/conversation/hooks/index.ts:536 +#: src/components/conversation/hooks/index.ts:552 msgid "Failed to clear conversations" msgstr "" @@ -4206,12 +4206,12 @@ msgstr "Failed to reload. Please try again." msgid "Failed to remove avatar" msgstr "Failed to remove avatar" -#: src/components/conversation/hooks/index.ts:439 +#: src/components/conversation/hooks/index.ts:454 msgid "Failed to remove conversation from chat" msgstr "Failed to remove conversation from chat" #. placeholder {0}: error.response?.data?.detail ? `: ${error.response.data.detail}` : "" -#: src/components/conversation/hooks/index.ts:434 +#: src/components/conversation/hooks/index.ts:449 msgid "Failed to remove conversation from chat{0}" msgstr "Failed to remove conversation from chat{0}" @@ -4223,7 +4223,7 @@ msgstr "Failed to remove logo" msgid "Failed to reschedule. Please choose a time further in the future and try again." msgstr "Failed to reschedule. Please choose a time further in the future and try again." -#: src/components/conversation/hooks/index.ts:637 +#: src/components/conversation/hooks/index.ts:652 msgid "Failed to retranscribe conversation. Please try again." msgstr "Failed to retranscribe conversation. Please try again." @@ -5655,7 +5655,7 @@ msgstr "loading..." #: src/components/conversation/ProjectConversationsPanel.tsx:164 #: src/components/conversation/ConversationAccordion.tsx:119 -#: src/components/conversation/hooks/index.ts:351 +#: src/components/conversation/hooks/index.ts:366 msgid "Loading..." msgstr "Loading..." diff --git a/echo/frontend/src/locales/de-DE.po b/echo/frontend/src/locales/de-DE.po index ad7c9e647..ff45212e0 100644 --- a/echo/frontend/src/locales/de-DE.po +++ b/echo/frontend/src/locales/de-DE.po @@ -2354,7 +2354,7 @@ msgstr "" msgid "Clear search" msgstr "" -#: src/components/conversation/hooks/index.ts:540 +#: src/components/conversation/hooks/index.ts:555 msgid "Cleared {cleared} of {total} conversations" msgstr "" @@ -2606,7 +2606,7 @@ msgstr "Gespräch" msgid "Conversation" msgstr "Gespräch" -#: src/components/conversation/hooks/index.ts:378 +#: src/components/conversation/hooks/index.ts:393 msgid "Conversation added to chat" msgstr "Gespräch zum Chat hinzugefügt" @@ -2615,7 +2615,7 @@ msgstr "Gespräch zum Chat hinzugefügt" msgid "participant.conversation.ended" msgstr "Gespräch beendet" -#: src/components/conversation/hooks/index.ts:494 +#: src/components/conversation/hooks/index.ts:509 msgid "Conversation removed from chat" msgstr "Gespräch aus dem Chat entfernt" @@ -2646,7 +2646,7 @@ msgstr "Gespräche" msgid "Conversations" msgstr "Gespräche" -#: src/components/conversation/hooks/index.ts:530 +#: src/components/conversation/hooks/index.ts:545 msgid "Conversations cleared" msgstr "" @@ -4090,12 +4090,12 @@ msgstr "" msgid "Failed" msgstr "Fehlgeschlagen" -#: src/components/conversation/hooks/index.ts:313 +#: src/components/conversation/hooks/index.ts:328 msgid "Failed to add conversation to chat" msgstr "Fehler beim Hinzufügen des Gesprächs zum Chat" #. placeholder {0}: error.response?.data?.detail ? `: ${error.response.data.detail}` : "" -#: src/components/conversation/hooks/index.ts:308 +#: src/components/conversation/hooks/index.ts:323 msgid "Failed to add conversation to chat{0}" msgstr "Fehler beim Hinzufügen des Gesprächs zum Chat{0}" @@ -4109,8 +4109,8 @@ msgstr "Fehler beim Hinzufügen von Unterhaltungen zum Kontext" msgid "Failed to approve outcome. Please try again." msgstr "Ergebnis konnte nicht freigegeben werden. Bitte versuchen Sie es erneut." -#: src/components/conversation/hooks/index.ts:521 -#: src/components/conversation/hooks/index.ts:537 +#: src/components/conversation/hooks/index.ts:536 +#: src/components/conversation/hooks/index.ts:552 msgid "Failed to clear conversations" msgstr "" @@ -4207,12 +4207,12 @@ msgstr "Neu laden fehlgeschlagen. Bitte versuchen Sie es erneut." msgid "Failed to remove avatar" msgstr "Avatar konnte nicht entfernt werden" -#: src/components/conversation/hooks/index.ts:439 +#: src/components/conversation/hooks/index.ts:454 msgid "Failed to remove conversation from chat" msgstr "Fehler beim Entfernen des Gesprächs aus dem Chat" #. placeholder {0}: error.response?.data?.detail ? `: ${error.response.data.detail}` : "" -#: src/components/conversation/hooks/index.ts:434 +#: src/components/conversation/hooks/index.ts:449 msgid "Failed to remove conversation from chat{0}" msgstr "Fehler beim Entfernen des Gesprächs aus dem Chat{0}" @@ -4224,7 +4224,7 @@ msgstr "Logo konnte nicht entfernt werden" msgid "Failed to reschedule. Please choose a time further in the future and try again." msgstr "Neuplanung fehlgeschlagen. Bitte wahlen Sie einen spateren Zeitpunkt und versuchen Sie es erneut." -#: src/components/conversation/hooks/index.ts:637 +#: src/components/conversation/hooks/index.ts:652 msgid "Failed to retranscribe conversation. Please try again." msgstr "Fehler beim Hertranskribieren des Gesprächs. Bitte versuchen Sie es erneut." @@ -5656,7 +5656,7 @@ msgstr "wird geladen..." #: src/components/conversation/ProjectConversationsPanel.tsx:164 #: src/components/conversation/ConversationAccordion.tsx:119 -#: src/components/conversation/hooks/index.ts:351 +#: src/components/conversation/hooks/index.ts:366 msgid "Loading..." msgstr "Laden..." diff --git a/echo/frontend/src/locales/en-US.po b/echo/frontend/src/locales/en-US.po index 6f4795109..5f13bd6c7 100644 --- a/echo/frontend/src/locales/en-US.po +++ b/echo/frontend/src/locales/en-US.po @@ -2353,7 +2353,7 @@ msgstr "Clear filters" msgid "Clear search" msgstr "Clear search" -#: src/components/conversation/hooks/index.ts:540 +#: src/components/conversation/hooks/index.ts:555 msgid "Cleared {cleared} of {total} conversations" msgstr "Cleared {cleared} of {total} conversations" @@ -2605,7 +2605,7 @@ msgstr "conversation" msgid "Conversation" msgstr "Conversation" -#: src/components/conversation/hooks/index.ts:378 +#: src/components/conversation/hooks/index.ts:393 msgid "Conversation added to chat" msgstr "Conversation added to chat" @@ -2614,7 +2614,7 @@ msgstr "Conversation added to chat" msgid "participant.conversation.ended" msgstr "Conversation Ended" -#: src/components/conversation/hooks/index.ts:494 +#: src/components/conversation/hooks/index.ts:509 msgid "Conversation removed from chat" msgstr "Conversation removed from chat" @@ -2645,7 +2645,7 @@ msgstr "conversations" msgid "Conversations" msgstr "Conversations" -#: src/components/conversation/hooks/index.ts:530 +#: src/components/conversation/hooks/index.ts:545 msgid "Conversations cleared" msgstr "Conversations cleared" @@ -4089,12 +4089,12 @@ msgstr "Extra participants" msgid "Failed" msgstr "Failed" -#: src/components/conversation/hooks/index.ts:313 +#: src/components/conversation/hooks/index.ts:328 msgid "Failed to add conversation to chat" msgstr "Failed to add conversation to chat" #. placeholder {0}: error.response?.data?.detail ? `: ${error.response.data.detail}` : "" -#: src/components/conversation/hooks/index.ts:308 +#: src/components/conversation/hooks/index.ts:323 msgid "Failed to add conversation to chat{0}" msgstr "Failed to add conversation to chat{0}" @@ -4108,8 +4108,8 @@ msgstr "Failed to add conversations to context" msgid "Failed to approve outcome. Please try again." msgstr "Failed to approve outcome. Please try again." -#: src/components/conversation/hooks/index.ts:521 -#: src/components/conversation/hooks/index.ts:537 +#: src/components/conversation/hooks/index.ts:536 +#: src/components/conversation/hooks/index.ts:552 msgid "Failed to clear conversations" msgstr "Failed to clear conversations" @@ -4206,12 +4206,12 @@ msgstr "Failed to reload. Please try again." msgid "Failed to remove avatar" msgstr "Failed to remove avatar" -#: src/components/conversation/hooks/index.ts:439 +#: src/components/conversation/hooks/index.ts:454 msgid "Failed to remove conversation from chat" msgstr "Failed to remove conversation from chat" #. placeholder {0}: error.response?.data?.detail ? `: ${error.response.data.detail}` : "" -#: src/components/conversation/hooks/index.ts:434 +#: src/components/conversation/hooks/index.ts:449 msgid "Failed to remove conversation from chat{0}" msgstr "Failed to remove conversation from chat{0}" @@ -4223,7 +4223,7 @@ msgstr "Failed to remove logo" msgid "Failed to reschedule. Please choose a time further in the future and try again." msgstr "Failed to reschedule. Please choose a time further in the future and try again." -#: src/components/conversation/hooks/index.ts:637 +#: src/components/conversation/hooks/index.ts:652 msgid "Failed to retranscribe conversation. Please try again." msgstr "Failed to retranscribe conversation. Please try again." @@ -5655,7 +5655,7 @@ msgstr "loading..." #: src/components/conversation/ProjectConversationsPanel.tsx:164 #: src/components/conversation/ConversationAccordion.tsx:119 -#: src/components/conversation/hooks/index.ts:351 +#: src/components/conversation/hooks/index.ts:366 msgid "Loading..." msgstr "Loading..." diff --git a/echo/frontend/src/locales/es-ES.po b/echo/frontend/src/locales/es-ES.po index d64ff4d14..c9d66b6ca 100644 --- a/echo/frontend/src/locales/es-ES.po +++ b/echo/frontend/src/locales/es-ES.po @@ -2354,7 +2354,7 @@ msgstr "" msgid "Clear search" msgstr "" -#: src/components/conversation/hooks/index.ts:540 +#: src/components/conversation/hooks/index.ts:555 msgid "Cleared {cleared} of {total} conversations" msgstr "" @@ -2606,7 +2606,7 @@ msgstr "conversación" msgid "Conversation" msgstr "Conversación" -#: src/components/conversation/hooks/index.ts:378 +#: src/components/conversation/hooks/index.ts:393 msgid "Conversation added to chat" msgstr "Conversación añadida al chat" @@ -2615,7 +2615,7 @@ msgstr "Conversación añadida al chat" msgid "participant.conversation.ended" msgstr "Conversación terminada" -#: src/components/conversation/hooks/index.ts:494 +#: src/components/conversation/hooks/index.ts:509 msgid "Conversation removed from chat" msgstr "Conversación eliminada del chat" @@ -2646,7 +2646,7 @@ msgstr "conversaciones" msgid "Conversations" msgstr "Conversaciones" -#: src/components/conversation/hooks/index.ts:530 +#: src/components/conversation/hooks/index.ts:545 msgid "Conversations cleared" msgstr "" @@ -4090,12 +4090,12 @@ msgstr "" msgid "Failed" msgstr "Error" -#: src/components/conversation/hooks/index.ts:313 +#: src/components/conversation/hooks/index.ts:328 msgid "Failed to add conversation to chat" msgstr "Error al añadir la conversación al chat" #. placeholder {0}: error.response?.data?.detail ? `: ${error.response.data.detail}` : "" -#: src/components/conversation/hooks/index.ts:308 +#: src/components/conversation/hooks/index.ts:323 msgid "Failed to add conversation to chat{0}" msgstr "Error al añadir la conversación al chat{0}" @@ -4109,8 +4109,8 @@ msgstr "Error al añadir conversaciones al contexto" msgid "Failed to approve outcome. Please try again." msgstr "Error al aprobar el resultado. Por favor, inténtalo de nuevo." -#: src/components/conversation/hooks/index.ts:521 -#: src/components/conversation/hooks/index.ts:537 +#: src/components/conversation/hooks/index.ts:536 +#: src/components/conversation/hooks/index.ts:552 msgid "Failed to clear conversations" msgstr "" @@ -4207,12 +4207,12 @@ msgstr "Error al recargar. Por favor, inténtalo de nuevo." msgid "Failed to remove avatar" msgstr "No se pudo eliminar el avatar" -#: src/components/conversation/hooks/index.ts:439 +#: src/components/conversation/hooks/index.ts:454 msgid "Failed to remove conversation from chat" msgstr "Error al eliminar la conversación del chat" #. placeholder {0}: error.response?.data?.detail ? `: ${error.response.data.detail}` : "" -#: src/components/conversation/hooks/index.ts:434 +#: src/components/conversation/hooks/index.ts:449 msgid "Failed to remove conversation from chat{0}" msgstr "Error al eliminar la conversación del chat{0}" @@ -4224,7 +4224,7 @@ msgstr "Error al eliminar el logo" msgid "Failed to reschedule. Please choose a time further in the future and try again." msgstr "Error al reprogramar. Por favor, elija un horario mas lejano e intentelo de nuevo." -#: src/components/conversation/hooks/index.ts:637 +#: src/components/conversation/hooks/index.ts:652 msgid "Failed to retranscribe conversation. Please try again." msgstr "Error al retranscribir la conversación. Por favor, inténtalo de nuevo." @@ -5656,7 +5656,7 @@ msgstr "cargando..." #: src/components/conversation/ProjectConversationsPanel.tsx:164 #: src/components/conversation/ConversationAccordion.tsx:119 -#: src/components/conversation/hooks/index.ts:351 +#: src/components/conversation/hooks/index.ts:366 msgid "Loading..." msgstr "Cargando..." diff --git a/echo/frontend/src/locales/fr-FR.po b/echo/frontend/src/locales/fr-FR.po index 575f93cb5..3802db1b4 100644 --- a/echo/frontend/src/locales/fr-FR.po +++ b/echo/frontend/src/locales/fr-FR.po @@ -2354,7 +2354,7 @@ msgstr "" msgid "Clear search" msgstr "" -#: src/components/conversation/hooks/index.ts:540 +#: src/components/conversation/hooks/index.ts:555 msgid "Cleared {cleared} of {total} conversations" msgstr "" @@ -2606,7 +2606,7 @@ msgstr "conversation" msgid "Conversation" msgstr "Conversation" -#: src/components/conversation/hooks/index.ts:378 +#: src/components/conversation/hooks/index.ts:393 msgid "Conversation added to chat" msgstr "Conversation ajoutée à la discussion" @@ -2615,7 +2615,7 @@ msgstr "Conversation ajoutée à la discussion" msgid "participant.conversation.ended" msgstr "Conversation terminée" -#: src/components/conversation/hooks/index.ts:494 +#: src/components/conversation/hooks/index.ts:509 msgid "Conversation removed from chat" msgstr "Conversation retirée de la discussion" @@ -2646,7 +2646,7 @@ msgstr "conversations" msgid "Conversations" msgstr "Conversations" -#: src/components/conversation/hooks/index.ts:530 +#: src/components/conversation/hooks/index.ts:545 msgid "Conversations cleared" msgstr "" @@ -4090,12 +4090,12 @@ msgstr "" msgid "Failed" msgstr "Échec" -#: src/components/conversation/hooks/index.ts:313 +#: src/components/conversation/hooks/index.ts:328 msgid "Failed to add conversation to chat" msgstr "Échec de l'ajout de la conversation à la discussion" #. placeholder {0}: error.response?.data?.detail ? `: ${error.response.data.detail}` : "" -#: src/components/conversation/hooks/index.ts:308 +#: src/components/conversation/hooks/index.ts:323 msgid "Failed to add conversation to chat{0}" msgstr "Échec de l'ajout de la conversation à la discussion{0}" @@ -4109,8 +4109,8 @@ msgstr "Échec de l'ajout de conversations au contexte" msgid "Failed to approve outcome. Please try again." msgstr "Échec de l'approbation du résultat. Veuillez réessayer." -#: src/components/conversation/hooks/index.ts:521 -#: src/components/conversation/hooks/index.ts:537 +#: src/components/conversation/hooks/index.ts:536 +#: src/components/conversation/hooks/index.ts:552 msgid "Failed to clear conversations" msgstr "" @@ -4207,12 +4207,12 @@ msgstr "Échec du rechargement. Veuillez réessayer." msgid "Failed to remove avatar" msgstr "Impossible de supprimer l'avatar" -#: src/components/conversation/hooks/index.ts:439 +#: src/components/conversation/hooks/index.ts:454 msgid "Failed to remove conversation from chat" msgstr "Échec de la suppression de la conversation de la discussion" #. placeholder {0}: error.response?.data?.detail ? `: ${error.response.data.detail}` : "" -#: src/components/conversation/hooks/index.ts:434 +#: src/components/conversation/hooks/index.ts:449 msgid "Failed to remove conversation from chat{0}" msgstr "Échec de la suppression de la conversation de la discussion{0}" @@ -4224,7 +4224,7 @@ msgstr "Échec de la suppression du logo" msgid "Failed to reschedule. Please choose a time further in the future and try again." msgstr "Replanification echouee. Veuillez choisir un horaire plus eloigne et reessayer." -#: src/components/conversation/hooks/index.ts:637 +#: src/components/conversation/hooks/index.ts:652 msgid "Failed to retranscribe conversation. Please try again." msgstr "Échec de la transcription de la conversation. Veuillez réessayer." @@ -5656,7 +5656,7 @@ msgstr "chargement..." #: src/components/conversation/ProjectConversationsPanel.tsx:164 #: src/components/conversation/ConversationAccordion.tsx:119 -#: src/components/conversation/hooks/index.ts:351 +#: src/components/conversation/hooks/index.ts:366 msgid "Loading..." msgstr "Chargement..." diff --git a/echo/frontend/src/locales/it-IT.po b/echo/frontend/src/locales/it-IT.po index 48c512bfc..aea3b8088 100644 --- a/echo/frontend/src/locales/it-IT.po +++ b/echo/frontend/src/locales/it-IT.po @@ -2353,7 +2353,7 @@ msgstr "" msgid "Clear search" msgstr "" -#: src/components/conversation/hooks/index.ts:540 +#: src/components/conversation/hooks/index.ts:555 msgid "Cleared {cleared} of {total} conversations" msgstr "" @@ -2605,7 +2605,7 @@ msgstr "conversation" msgid "Conversation" msgstr "Conversazione" -#: src/components/conversation/hooks/index.ts:378 +#: src/components/conversation/hooks/index.ts:393 msgid "Conversation added to chat" msgstr "Conversation added to chat" @@ -2614,7 +2614,7 @@ msgstr "Conversation added to chat" msgid "participant.conversation.ended" msgstr "Conversation Ended" -#: src/components/conversation/hooks/index.ts:494 +#: src/components/conversation/hooks/index.ts:509 msgid "Conversation removed from chat" msgstr "Conversation removed from chat" @@ -2645,7 +2645,7 @@ msgstr "conversations" msgid "Conversations" msgstr "Conversations" -#: src/components/conversation/hooks/index.ts:530 +#: src/components/conversation/hooks/index.ts:545 msgid "Conversations cleared" msgstr "" @@ -4089,12 +4089,12 @@ msgstr "" msgid "Failed" msgstr "Failed" -#: src/components/conversation/hooks/index.ts:313 +#: src/components/conversation/hooks/index.ts:328 msgid "Failed to add conversation to chat" msgstr "Failed to add conversation to chat" #. placeholder {0}: error.response?.data?.detail ? `: ${error.response.data.detail}` : "" -#: src/components/conversation/hooks/index.ts:308 +#: src/components/conversation/hooks/index.ts:323 msgid "Failed to add conversation to chat{0}" msgstr "Failed to add conversation to chat{0}" @@ -4108,8 +4108,8 @@ msgstr "Failed to add conversations to context" msgid "Failed to approve outcome. Please try again." msgstr "Failed to approve outcome. Please try again." -#: src/components/conversation/hooks/index.ts:521 -#: src/components/conversation/hooks/index.ts:537 +#: src/components/conversation/hooks/index.ts:536 +#: src/components/conversation/hooks/index.ts:552 msgid "Failed to clear conversations" msgstr "" @@ -4206,12 +4206,12 @@ msgstr "Failed to reload. Please try again." msgid "Failed to remove avatar" msgstr "Failed to remove avatar" -#: src/components/conversation/hooks/index.ts:439 +#: src/components/conversation/hooks/index.ts:454 msgid "Failed to remove conversation from chat" msgstr "Failed to remove conversation from chat" #. placeholder {0}: error.response?.data?.detail ? `: ${error.response.data.detail}` : "" -#: src/components/conversation/hooks/index.ts:434 +#: src/components/conversation/hooks/index.ts:449 msgid "Failed to remove conversation from chat{0}" msgstr "Failed to remove conversation from chat{0}" @@ -4223,7 +4223,7 @@ msgstr "Failed to remove logo" msgid "Failed to reschedule. Please choose a time further in the future and try again." msgstr "Riprogrammazione non riuscita. Scegli un orario più avanti e riprova." -#: src/components/conversation/hooks/index.ts:637 +#: src/components/conversation/hooks/index.ts:652 msgid "Failed to retranscribe conversation. Please try again." msgstr "Failed to retranscribe conversation. Please try again." @@ -5655,7 +5655,7 @@ msgstr "loading..." #: src/components/conversation/ProjectConversationsPanel.tsx:164 #: src/components/conversation/ConversationAccordion.tsx:119 -#: src/components/conversation/hooks/index.ts:351 +#: src/components/conversation/hooks/index.ts:366 msgid "Loading..." msgstr "Loading..." diff --git a/echo/frontend/src/locales/nl-NL.po b/echo/frontend/src/locales/nl-NL.po index 68955ee2a..af788eafc 100644 --- a/echo/frontend/src/locales/nl-NL.po +++ b/echo/frontend/src/locales/nl-NL.po @@ -2351,7 +2351,7 @@ msgstr "Filters wissen" msgid "Clear search" msgstr "Zoekopdracht wissen" -#: src/components/conversation/hooks/index.ts:540 +#: src/components/conversation/hooks/index.ts:555 msgid "Cleared {cleared} of {total} conversations" msgstr "{cleared} van {total} gesprekken gewist" @@ -2603,7 +2603,7 @@ msgstr "gesprek" msgid "Conversation" msgstr "Gesprek" -#: src/components/conversation/hooks/index.ts:378 +#: src/components/conversation/hooks/index.ts:393 msgid "Conversation added to chat" msgstr "Gesprek toegevoegd aan chat" @@ -2612,7 +2612,7 @@ msgstr "Gesprek toegevoegd aan chat" msgid "participant.conversation.ended" msgstr "Gesprek beëindigd" -#: src/components/conversation/hooks/index.ts:494 +#: src/components/conversation/hooks/index.ts:509 msgid "Conversation removed from chat" msgstr "Gesprek verwijderd uit chat" @@ -2643,7 +2643,7 @@ msgstr "gesprekken" msgid "Conversations" msgstr "Gesprekken" -#: src/components/conversation/hooks/index.ts:530 +#: src/components/conversation/hooks/index.ts:545 msgid "Conversations cleared" msgstr "Gesprekken gewist" @@ -4087,12 +4087,12 @@ msgstr "Extra deelnemers" msgid "Failed" msgstr "Mislukt" -#: src/components/conversation/hooks/index.ts:313 +#: src/components/conversation/hooks/index.ts:328 msgid "Failed to add conversation to chat" msgstr "Fout bij het toevoegen van het gesprek aan de chat" #. placeholder {0}: error.response?.data?.detail ? `: ${error.response.data.detail}` : "" -#: src/components/conversation/hooks/index.ts:308 +#: src/components/conversation/hooks/index.ts:323 msgid "Failed to add conversation to chat{0}" msgstr "Fout bij het toevoegen van het gesprek aan de chat{0}" @@ -4106,8 +4106,8 @@ msgstr "Mislukt om gesprekken aan context toe te voegen" msgid "Failed to approve outcome. Please try again." msgstr "Fout bij het goedkeuren van het resultaat. Probeer het opnieuw." -#: src/components/conversation/hooks/index.ts:521 -#: src/components/conversation/hooks/index.ts:537 +#: src/components/conversation/hooks/index.ts:536 +#: src/components/conversation/hooks/index.ts:552 msgid "Failed to clear conversations" msgstr "Gesprekken wissen is mislukt" @@ -4204,12 +4204,12 @@ msgstr "Opnieuw laden is mislukt. Probeer het opnieuw." msgid "Failed to remove avatar" msgstr "Kan avatar niet verwijderen" -#: src/components/conversation/hooks/index.ts:439 +#: src/components/conversation/hooks/index.ts:454 msgid "Failed to remove conversation from chat" msgstr "Fout bij het verwijderen van het gesprek uit de chat" #. placeholder {0}: error.response?.data?.detail ? `: ${error.response.data.detail}` : "" -#: src/components/conversation/hooks/index.ts:434 +#: src/components/conversation/hooks/index.ts:449 msgid "Failed to remove conversation from chat{0}" msgstr "Fout bij het verwijderen van het gesprek uit de chat{0}" @@ -4221,7 +4221,7 @@ msgstr "Fout bij het verwijderen van het logo" msgid "Failed to reschedule. Please choose a time further in the future and try again." msgstr "Opnieuw plannen mislukt. Kies een tijdstip verder in de toekomst en probeer het opnieuw." -#: src/components/conversation/hooks/index.ts:637 +#: src/components/conversation/hooks/index.ts:652 msgid "Failed to retranscribe conversation. Please try again." msgstr "Fout bij het hertranscriptie van het gesprek. Probeer het opnieuw." @@ -5653,7 +5653,7 @@ msgstr "bezig met laden..." #: src/components/conversation/ProjectConversationsPanel.tsx:164 #: src/components/conversation/ConversationAccordion.tsx:119 -#: src/components/conversation/hooks/index.ts:351 +#: src/components/conversation/hooks/index.ts:366 msgid "Loading..." msgstr "Bezig met laden..." diff --git a/echo/frontend/src/locales/uk-UA.po b/echo/frontend/src/locales/uk-UA.po index 162058bd8..d8e369b1e 100644 --- a/echo/frontend/src/locales/uk-UA.po +++ b/echo/frontend/src/locales/uk-UA.po @@ -2353,7 +2353,7 @@ msgstr "" msgid "Clear search" msgstr "" -#: src/components/conversation/hooks/index.ts:540 +#: src/components/conversation/hooks/index.ts:555 msgid "Cleared {cleared} of {total} conversations" msgstr "" @@ -2605,7 +2605,7 @@ msgstr "conversation" msgid "Conversation" msgstr "Розмова" -#: src/components/conversation/hooks/index.ts:378 +#: src/components/conversation/hooks/index.ts:393 msgid "Conversation added to chat" msgstr "Conversation added to chat" @@ -2614,7 +2614,7 @@ msgstr "Conversation added to chat" msgid "participant.conversation.ended" msgstr "Conversation Ended" -#: src/components/conversation/hooks/index.ts:494 +#: src/components/conversation/hooks/index.ts:509 msgid "Conversation removed from chat" msgstr "Conversation removed from chat" @@ -2645,7 +2645,7 @@ msgstr "conversations" msgid "Conversations" msgstr "Conversations" -#: src/components/conversation/hooks/index.ts:530 +#: src/components/conversation/hooks/index.ts:545 msgid "Conversations cleared" msgstr "" @@ -4089,12 +4089,12 @@ msgstr "" msgid "Failed" msgstr "Failed" -#: src/components/conversation/hooks/index.ts:313 +#: src/components/conversation/hooks/index.ts:328 msgid "Failed to add conversation to chat" msgstr "Failed to add conversation to chat" #. placeholder {0}: error.response?.data?.detail ? `: ${error.response.data.detail}` : "" -#: src/components/conversation/hooks/index.ts:308 +#: src/components/conversation/hooks/index.ts:323 msgid "Failed to add conversation to chat{0}" msgstr "Failed to add conversation to chat{0}" @@ -4108,8 +4108,8 @@ msgstr "Failed to add conversations to context" msgid "Failed to approve outcome. Please try again." msgstr "Failed to approve outcome. Please try again." -#: src/components/conversation/hooks/index.ts:521 -#: src/components/conversation/hooks/index.ts:537 +#: src/components/conversation/hooks/index.ts:536 +#: src/components/conversation/hooks/index.ts:552 msgid "Failed to clear conversations" msgstr "" @@ -4206,12 +4206,12 @@ msgstr "Failed to reload. Please try again." msgid "Failed to remove avatar" msgstr "Failed to remove avatar" -#: src/components/conversation/hooks/index.ts:439 +#: src/components/conversation/hooks/index.ts:454 msgid "Failed to remove conversation from chat" msgstr "Failed to remove conversation from chat" #. placeholder {0}: error.response?.data?.detail ? `: ${error.response.data.detail}` : "" -#: src/components/conversation/hooks/index.ts:434 +#: src/components/conversation/hooks/index.ts:449 msgid "Failed to remove conversation from chat{0}" msgstr "Failed to remove conversation from chat{0}" @@ -4223,7 +4223,7 @@ msgstr "Failed to remove logo" msgid "Failed to reschedule. Please choose a time further in the future and try again." msgstr "Не вдалося перепланувати. Будь ласка, оберiть час далi у майбутньому та спробуйте знову." -#: src/components/conversation/hooks/index.ts:637 +#: src/components/conversation/hooks/index.ts:652 msgid "Failed to retranscribe conversation. Please try again." msgstr "Failed to retranscribe conversation. Please try again." @@ -5655,7 +5655,7 @@ msgstr "loading..." #: src/components/conversation/ProjectConversationsPanel.tsx:164 #: src/components/conversation/ConversationAccordion.tsx:119 -#: src/components/conversation/hooks/index.ts:351 +#: src/components/conversation/hooks/index.ts:366 msgid "Loading..." msgstr "Loading..." diff --git a/echo/frontend/vite.config.ts b/echo/frontend/vite.config.ts index be8c14d9f..c112f7add 100644 --- a/echo/frontend/vite.config.ts +++ b/echo/frontend/vite.config.ts @@ -158,6 +158,10 @@ export default defineConfig(({ mode }) => { }, }, }, + // Emit source maps only when a deploy opts in via POSTHOG_SOURCEMAPS, + // so the deploy workflow can upload them to PostHog for symbolication. + // Off by default to keep maps out of preview and portal bundles. + sourcemap: process.env.POSTHOG_SOURCEMAPS === "1", }, define: { __APP_BUILD_ID__: JSON.stringify(buildId),