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

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .github/workflows/release-helm-chart.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,9 @@ jobs:

expected_image="ghcr.io/formbricks/formbricks:${VERSION}"
image_count="$(grep -c "image: ${expected_image}$" <<< "$rendered" || true)"
if [[ "$image_count" -ne 2 ]]; then
echo "Expected web Deployment and migration Job to render ${expected_image}; found ${image_count} matches"
if [[ "$image_count" -ne 3 ]]; then
printf 'Expected %s in web Deployment and both migration containers; found %s matches\n' \
"$expected_image" "$image_count"
grep "image: ghcr.io/formbricks/formbricks:" <<< "$rendered" || true
exit 1
fi
Expand Down
13 changes: 7 additions & 6 deletions apps/web/i18n.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3860,13 +3860,12 @@ checksums:
workspace/unify/taxonomy_empty_no_active: a9d0c4a7959fba388f10b7f260736da9
workspace/unify/taxonomy_empty_select_field: dbc61237b3f159cd90dc06529659800b
workspace/unify/taxonomy_expand: 1bffd02092bb2dd1ac0455fe93ceb1f2
workspace/unify/taxonomy_failure_generation_failed: 28330167246e89bc239dcda1d86fc291
workspace/unify/taxonomy_failure_generation_failed: e7840dd56d9e2538f3fc44cc8cd50c3b
workspace/unify/taxonomy_failure_insufficient_data: dbfb31f52373e52c11e5063920f916fd
workspace/unify/taxonomy_failure_internal_error: f98fa903c13cee7a8ee4578aae493b23
workspace/unify/taxonomy_failure_invalid_output: ba829009c2023add2a7cc5cf55aa1969
workspace/unify/taxonomy_failure_service_unavailable: 991dd474562ff9f11207b985aff06fb4
workspace/unify/taxonomy_failure_internal_error: 234db9b67862ec9690a055d2ce8b0403
workspace/unify/taxonomy_failure_invalid_output: d9816c9abd1ff556cbb892631f56491c
workspace/unify/taxonomy_failure_service_unavailable: 3c8e96a9031b7a65933765476d048efc
workspace/unify/taxonomy_feedback_source_fallback: 9ac9f86853d6441eaf25fdd697f963c5
workspace/unify/taxonomy_fields_unavailable: 419b3ed0c9b689ecb8f6099dbfe3042b
workspace/unify/taxonomy_gate_embedding_description: 1c7cdf3a65b6e6fe77e1b55d4027643d
workspace/unify/taxonomy_gate_embedding_progress: 03f95e8f70fdec85c29f728f41f7eef2
workspace/unify/taxonomy_gate_embedding_title: 1017dbabb21fee60364ec0191406044b
Expand All @@ -3875,6 +3874,7 @@ checksums:
workspace/unify/taxonomy_gate_records_progress: 65895146df298ea1195cb1d41314a79b
workspace/unify/taxonomy_gate_setup_sources: ae72c0874ecd769ecc680b25b251910a
workspace/unify/taxonomy_generate: 81e42ee6876e511fd129113c7da645e7
workspace/unify/taxonomy_generating: d55ce9138ed4a7d033bd9030425bf850
workspace/unify/taxonomy_keyword: c85a01aa86d4b45d821978d2159e0f1b
workspace/unify/taxonomy_load_failed: 48dbd5804a8173d4da6684a92475d65c
workspace/unify/taxonomy_load_records_failed: 57f6c8c5fa524d7c2d8777315e5036c8
Expand Down Expand Up @@ -3905,8 +3905,9 @@ checksums:
workspace/unify/taxonomy_sentiment_positive: c0c37bed1a06b7e8cdc72607e56487de
workspace/unify/taxonomy_sentiment_very_negative: d8fc168ac8dee517c9d5960bfdd2c1d0
workspace/unify/taxonomy_sentiment_very_positive: 0b5952d9b44604c77b74bb1d3eeb29eb
workspace/unify/taxonomy_service_unavailable: 3329f35b3a5c38c92e56b8b07ec49e0e
workspace/unify/taxonomy_source: 6e87903ef260da661b2bf6d858ba68ca
workspace/unify/taxonomy_start_failed: 797224ea1b1af31d98a5b5a1a1c98598
workspace/unify/taxonomy_start_failed: 3ac21a1a2a1ef837e48414597f04451b
workspace/unify/taxonomy_text_records_short: e901114256a076d4315262d252471047
workspace/unify/taxonomy_title: 01288877d7b241a417039e5c998ff21c
workspace/unify/taxonomy_view_mode: 36a9b5e3dc153c036d320460d72a03c3
Expand Down
39 changes: 39 additions & 0 deletions apps/web/lib/turbo-build-outputs.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import fs from "node:fs";
import path from "node:path";
import { fileURLToPath } from "node:url";
import { describe, expect, test } from "vitest";

// Guards the Turborepo output exclusions for the web build (see ENG-1805). The generic `build`
// task must exclude `.next/cache/**` and `.next/dev/**` so Turbo never caches the transient
// Next.js cache and dev directories — otherwise they fill local and CI disks (regression of the
// ENG-1662 fix). Because `@formbricks/web` has no `#build` override today it inherits `build`,
// but this test resolves outputs the same way Turbo does so a future package-specific override
// cannot silently drop the exclusions again.

const here = path.dirname(fileURLToPath(import.meta.url));
const turboJsonPath = path.resolve(here, "..", "..", "..", "turbo.json");

const REQUIRED_EXCLUSIONS = ["!.next/cache/**", "!.next/dev/**"];

describe("turbo.json web build excludes transient Next.js dirs", () => {
const turboJson = JSON.parse(fs.readFileSync(turboJsonPath, "utf-8")) as {
tasks: Record<string, { outputs?: string[] }>;
};

// Turbo uses the package-specific task when defined, otherwise the generic one.
const resolvedOutputs = turboJson.tasks["@formbricks/web#build"]?.outputs ?? turboJson.tasks.build.outputs ?? [];

test("resolved @formbricks/web#build outputs exclude .next/cache and .next/dev", () => {
const missing = REQUIRED_EXCLUSIONS.filter((exclusion) => !resolvedOutputs.includes(exclusion));
expect(
missing,
`@formbricks/web#build resolved outputs are missing exclusion(s): ${missing.join(", ")}. ` +
"Add them to the build task's `outputs` array so Turbo does not cache transient Next.js dirs (ENG-1805)."
).toEqual([]);
});

test("still caches the deployable build artifacts", () => {
expect(resolvedOutputs).toContain(".next/**");
expect(resolvedOutputs).toContain("dist/**");
});
});
13 changes: 7 additions & 6 deletions apps/web/locales/de-DE.json
Original file line number Diff line number Diff line change
Expand Up @@ -4020,13 +4020,12 @@
"taxonomy_empty_no_active": "No active taxonomy has been generated for this field yet.",
"taxonomy_empty_select_field": "Select a feedback field to view its taxonomy.",
"taxonomy_expand": "Ausklappen",
"taxonomy_failure_generation_failed": "Taxonomy generation failed.",
"taxonomy_failure_generation_failed": "Die Taxonomie-Generierung ist fehlgeschlagen. Bitte versuche es erneut oder wende dich an deinen Admin oder Support, falls das Problem weiterhin besteht.",
"taxonomy_failure_insufficient_data": "Not enough embedded feedback records are available for this field.",
"taxonomy_failure_internal_error": "Taxonomy generation failed because of an internal error.",
"taxonomy_failure_invalid_output": "The generated taxonomy could not be validated.",
"taxonomy_failure_service_unavailable": "Taxonomy generation is temporarily unavailable.",
"taxonomy_failure_internal_error": "Die Taxonomie-Generierung ist aufgrund eines internen Fehlers fehlgeschlagen. Bitte wende dich an deinen Admin oder Support.",
"taxonomy_failure_invalid_output": "Die generierte Taxonomie konnte nicht validiert werden. Bitte versuche es erneut oder wende dich an deinen Admin oder Support, falls das Problem weiterhin besteht.",
"taxonomy_failure_service_unavailable": "Die Taxonomie-Generierung ist vorübergehend nicht verfügbar. Bitte versuche es erneut oder wende dich an deinen Admin oder Support, falls das Problem weiterhin besteht.",
"taxonomy_feedback_source_fallback": "feedback",
"taxonomy_fields_unavailable": "Taxonomy fields are unavailable",
"taxonomy_gate_embedding_description": "Wir machen dein offenes Text-Feedback für KI lesbar. Das passiert automatisch und dauert normalerweise ein paar Minuten.",
"taxonomy_gate_embedding_progress": "{current} / {total} records embedded",
"taxonomy_gate_embedding_title": "Preparing your feedback",
Expand All @@ -4035,6 +4034,7 @@
"taxonomy_gate_records_progress": "{current} / {min} open-text feedback records",
"taxonomy_gate_setup_sources": "Setup more feedback sources",
"taxonomy_generate": "Generate taxonomy",
"taxonomy_generating": "Wird generiert...",
"taxonomy_keyword": "Keyword",
"taxonomy_load_failed": "Failed to load taxonomy",
"taxonomy_load_records_failed": "Failed to load feedback records",
Expand Down Expand Up @@ -4065,8 +4065,9 @@
"taxonomy_sentiment_positive": "Positiv",
"taxonomy_sentiment_very_negative": "Sehr negativ",
"taxonomy_sentiment_very_positive": "Sehr positiv",
"taxonomy_service_unavailable": "Die Taxonomie ist vorübergehend nicht verfügbar. Bitte versuche es erneut oder wende dich an deinen Admin oder Support, falls das Problem weiterhin besteht.",
"taxonomy_source": "Source",
"taxonomy_start_failed": "Failed to start taxonomy generation",
"taxonomy_start_failed": "Die Taxonomie-Generierung konnte nicht gestartet werden. Bitte versuche es erneut oder wende dich an deinen Admin oder den Support, falls das Problem weiterhin besteht.",
"taxonomy_text_records_short": "{count} text records",
"taxonomy_title": "Taxonomy",
"taxonomy_view_mode": "Ansehen",
Expand Down
13 changes: 7 additions & 6 deletions apps/web/locales/en-US.json
Original file line number Diff line number Diff line change
Expand Up @@ -4020,13 +4020,12 @@
"taxonomy_empty_no_active": "No active taxonomy has been generated for this field yet.",
"taxonomy_empty_select_field": "Select a feedback field to view its taxonomy.",
"taxonomy_expand": "Expand",
"taxonomy_failure_generation_failed": "Taxonomy generation failed.",
"taxonomy_failure_generation_failed": "Taxonomy generation failed. Please try again, or contact your admin or support if the problem persists.",
"taxonomy_failure_insufficient_data": "Not enough embedded feedback records are available for this field.",
"taxonomy_failure_internal_error": "Taxonomy generation failed because of an internal error.",
"taxonomy_failure_invalid_output": "The generated taxonomy could not be validated.",
"taxonomy_failure_service_unavailable": "Taxonomy generation is temporarily unavailable.",
"taxonomy_failure_internal_error": "Taxonomy generation failed due to an internal error. Please contact your admin or support.",
"taxonomy_failure_invalid_output": "The generated taxonomy couldn't be validated. Please try again, or contact your admin or support if it persists.",
"taxonomy_failure_service_unavailable": "Taxonomy generation is temporarily unavailable. Please try again, or contact your admin or support if it persists.",
"taxonomy_feedback_source_fallback": "feedback",
"taxonomy_fields_unavailable": "Taxonomy fields are unavailable",
"taxonomy_gate_embedding_description": "We're making your open text feedback readable for AI. This happens automatically and usually takes a few minutes.",
"taxonomy_gate_embedding_progress": "{current} / {total} records embedded",
"taxonomy_gate_embedding_title": "Preparing your feedback",
Expand All @@ -4035,6 +4034,7 @@
"taxonomy_gate_records_progress": "{current} / {min} open-text feedback records",
"taxonomy_gate_setup_sources": "Setup more feedback sources",
"taxonomy_generate": "Generate taxonomy",
"taxonomy_generating": "Generating...",
"taxonomy_keyword": "Keyword",
"taxonomy_load_failed": "Failed to load taxonomy",
"taxonomy_load_records_failed": "Failed to load feedback records",
Expand Down Expand Up @@ -4065,8 +4065,9 @@
"taxonomy_sentiment_positive": "Positive",
"taxonomy_sentiment_very_negative": "Very negative",
"taxonomy_sentiment_very_positive": "Very positive",
"taxonomy_service_unavailable": "Taxonomy is temporarily unavailable. Please try again, or contact your admin or support if the problem persists.",
"taxonomy_source": "Source",
"taxonomy_start_failed": "Failed to start taxonomy generation",
"taxonomy_start_failed": "Couldn't start taxonomy generation. Please try again, or contact your admin or support if the problem persists.",
"taxonomy_text_records_short": "{count} text records",
"taxonomy_title": "Taxonomy",
"taxonomy_view_mode": "View",
Expand Down
13 changes: 7 additions & 6 deletions apps/web/locales/es-ES.json
Original file line number Diff line number Diff line change
Expand Up @@ -4020,13 +4020,12 @@
"taxonomy_empty_no_active": "No active taxonomy has been generated for this field yet.",
"taxonomy_empty_select_field": "Select a feedback field to view its taxonomy.",
"taxonomy_expand": "Expandir",
"taxonomy_failure_generation_failed": "Taxonomy generation failed.",
"taxonomy_failure_generation_failed": "La generación de taxonomía ha fallado. Por favor, inténtalo de nuevo o contacta con tu administrador o soporte si el problema persiste.",
"taxonomy_failure_insufficient_data": "Not enough embedded feedback records are available for this field.",
"taxonomy_failure_internal_error": "Taxonomy generation failed because of an internal error.",
"taxonomy_failure_invalid_output": "The generated taxonomy could not be validated.",
"taxonomy_failure_service_unavailable": "Taxonomy generation is temporarily unavailable.",
"taxonomy_failure_internal_error": "La generación de taxonomía ha fallado debido a un error interno. Por favor, contacta con tu administrador o soporte.",
"taxonomy_failure_invalid_output": "No se ha podido validar la taxonomía generada. Por favor, inténtalo de nuevo o contacta con tu administrador o soporte si persiste.",
"taxonomy_failure_service_unavailable": "La generación de taxonomía no está disponible temporalmente. Por favor, inténtalo de nuevo o contacta con tu administrador o soporte si persiste.",
"taxonomy_feedback_source_fallback": "feedback",
"taxonomy_fields_unavailable": "Taxonomy fields are unavailable",
"taxonomy_gate_embedding_description": "Estamos haciendo que tus comentarios de texto abierto sean legibles para la IA. Esto ocurre automáticamente y suele tardar unos minutos.",
"taxonomy_gate_embedding_progress": "{current} / {total} records embedded",
"taxonomy_gate_embedding_title": "Preparing your feedback",
Expand All @@ -4035,6 +4034,7 @@
"taxonomy_gate_records_progress": "{current} / {min} open-text feedback records",
"taxonomy_gate_setup_sources": "Setup more feedback sources",
"taxonomy_generate": "Generate taxonomy",
"taxonomy_generating": "Generando...",
"taxonomy_keyword": "Keyword",
"taxonomy_load_failed": "Failed to load taxonomy",
"taxonomy_load_records_failed": "Failed to load feedback records",
Expand Down Expand Up @@ -4065,8 +4065,9 @@
"taxonomy_sentiment_positive": "Positivo",
"taxonomy_sentiment_very_negative": "Muy negativo",
"taxonomy_sentiment_very_positive": "Muy positivo",
"taxonomy_service_unavailable": "La taxonomía no está disponible temporalmente. Por favor, inténtalo de nuevo o contacta con tu administrador o soporte si el problema persiste.",
"taxonomy_source": "Source",
"taxonomy_start_failed": "Failed to start taxonomy generation",
"taxonomy_start_failed": "No se pudo iniciar la generación de taxonomía. Por favor, inténtalo de nuevo o contacta con tu administrador o con soporte si el problema persiste.",
"taxonomy_text_records_short": "{count} text records",
"taxonomy_title": "Taxonomy",
"taxonomy_view_mode": "Ver",
Expand Down
13 changes: 7 additions & 6 deletions apps/web/locales/fr-FR.json
Original file line number Diff line number Diff line change
Expand Up @@ -4020,13 +4020,12 @@
"taxonomy_empty_no_active": "No active taxonomy has been generated for this field yet.",
"taxonomy_empty_select_field": "Select a feedback field to view its taxonomy.",
"taxonomy_expand": "Développer",
"taxonomy_failure_generation_failed": "Taxonomy generation failed.",
"taxonomy_failure_generation_failed": "La génération de la taxonomie a échoué. Réessaie ou contacte ton administrateur ou le support si le problème persiste.",
"taxonomy_failure_insufficient_data": "Not enough embedded feedback records are available for this field.",
"taxonomy_failure_internal_error": "Taxonomy generation failed because of an internal error.",
"taxonomy_failure_invalid_output": "The generated taxonomy could not be validated.",
"taxonomy_failure_service_unavailable": "Taxonomy generation is temporarily unavailable.",
"taxonomy_failure_internal_error": "La génération de la taxonomie a échoué en raison d'une erreur interne. Contacte ton administrateur ou le support.",
"taxonomy_failure_invalid_output": "La taxonomie générée n'a pas pu être validée. Réessaie ou contacte ton administrateur ou le support si le problème persiste.",
"taxonomy_failure_service_unavailable": "La génération de la taxonomie est temporairement indisponible. Réessaie ou contacte ton administrateur ou le support si le problème persiste.",
"taxonomy_feedback_source_fallback": "feedback",
"taxonomy_fields_unavailable": "Taxonomy fields are unavailable",
"taxonomy_gate_embedding_description": "Nous rendons tes retours en texte libre lisibles pour l'IA. Cela se fait automatiquement et prend généralement quelques minutes.",
"taxonomy_gate_embedding_progress": "{current} / {total} records embedded",
"taxonomy_gate_embedding_title": "Preparing your feedback",
Expand All @@ -4035,6 +4034,7 @@
"taxonomy_gate_records_progress": "{current} / {min} open-text feedback records",
"taxonomy_gate_setup_sources": "Setup more feedback sources",
"taxonomy_generate": "Generate taxonomy",
"taxonomy_generating": "Génération en cours...",
"taxonomy_keyword": "Keyword",
"taxonomy_load_failed": "Failed to load taxonomy",
"taxonomy_load_records_failed": "Failed to load feedback records",
Expand Down Expand Up @@ -4065,8 +4065,9 @@
"taxonomy_sentiment_positive": "Positif",
"taxonomy_sentiment_very_negative": "Très négatif",
"taxonomy_sentiment_very_positive": "Très positif",
"taxonomy_service_unavailable": "La taxonomie est temporairement indisponible. Réessaie ou contacte ton administrateur ou le support si le problème persiste.",
"taxonomy_source": "Source",
"taxonomy_start_failed": "Failed to start taxonomy generation",
"taxonomy_start_failed": "Impossible de lancer la génération de taxonomie. Réessaie, ou contacte ton admin ou le support si le problème persiste.",
"taxonomy_text_records_short": "{count} text records",
"taxonomy_title": "Taxonomy",
"taxonomy_view_mode": "Afficher",
Expand Down
Loading
Loading