From 9cbff68b08dd4fc82e35b60bbe50d0ef8c53f7e8 Mon Sep 17 00:00:00 2001 From: okxint Date: Wed, 17 Jun 2026 10:59:30 +0530 Subject: [PATCH] fix: guard advance-analytics calls on Community Edition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On CE (is_self_managed: true), the analytics page was mounting components that fired requests to /advance-analytics, /advance-analytics-charts, and /advance-analytics-stats — endpoints that only exist on Pro/Cloud. This caused 500 errors and a broken UI. Check is_self_managed from instance config in the analytics page and render an informational empty state instead of the tabs, preventing any API calls from firing on CE. Adds the not_available_ce i18n key to all 19 supported locales. Fixes #9237 --- .../(projects)/analytics/[tabId]/page.tsx | 15 ++++++++++++++- packages/i18n/src/locales/cs/workspace.json | 6 +++++- packages/i18n/src/locales/de/workspace.json | 6 +++++- packages/i18n/src/locales/en/workspace.json | 6 +++++- packages/i18n/src/locales/es/workspace.json | 6 +++++- packages/i18n/src/locales/fr/workspace.json | 6 +++++- packages/i18n/src/locales/id/workspace.json | 6 +++++- packages/i18n/src/locales/it/workspace.json | 6 +++++- packages/i18n/src/locales/ja/workspace.json | 6 +++++- packages/i18n/src/locales/ko/workspace.json | 6 +++++- packages/i18n/src/locales/pl/workspace.json | 6 +++++- packages/i18n/src/locales/pt-BR/workspace.json | 6 +++++- packages/i18n/src/locales/ro/workspace.json | 6 +++++- packages/i18n/src/locales/ru/workspace.json | 6 +++++- packages/i18n/src/locales/sk/workspace.json | 6 +++++- packages/i18n/src/locales/tr-TR/workspace.json | 6 +++++- packages/i18n/src/locales/ua/workspace.json | 6 +++++- packages/i18n/src/locales/vi-VN/workspace.json | 6 +++++- packages/i18n/src/locales/zh-CN/workspace.json | 6 +++++- packages/i18n/src/locales/zh-TW/workspace.json | 6 +++++- 20 files changed, 109 insertions(+), 20 deletions(-) diff --git a/apps/web/app/(all)/[workspaceSlug]/(projects)/analytics/[tabId]/page.tsx b/apps/web/app/(all)/[workspaceSlug]/(projects)/analytics/[tabId]/page.tsx index 63321351dfe..c1555663a8c 100644 --- a/apps/web/app/(all)/[workspaceSlug]/(projects)/analytics/[tabId]/page.tsx +++ b/apps/web/app/(all)/[workspaceSlug]/(projects)/analytics/[tabId]/page.tsx @@ -18,6 +18,7 @@ import AnalyticsFilterActions from "@/components/analytics/analytics-filter-acti import { PageHead } from "@/components/core/page-title"; // hooks import { useCommandPalette } from "@/hooks/store/use-command-palette"; +import { useInstance } from "@/hooks/store/use-instance"; import { useProject } from "@/hooks/store/use-project"; import { useWorkspace } from "@/hooks/store/use-workspace"; import { useUserPermissions } from "@/hooks/store/user"; @@ -38,6 +39,9 @@ function AnalyticsPage({ params }: Route.ComponentProps) { const { workspaceProjectIds, loader } = useProject(); const { currentWorkspace } = useWorkspace(); const { allowPermissions } = useUserPermissions(); + const { config: instanceConfig } = useInstance(); + + const isSelfManaged = instanceConfig?.is_self_managed ?? false; const pageTitle = currentWorkspace?.name ? t(`workspace_analytics.page_label`, { workspace: currentWorkspace?.name }) @@ -71,7 +75,16 @@ function AnalyticsPage({ params }: Route.ComponentProps) { {workspaceProjectIds && ( <> - {workspaceProjectIds.length > 0 || loader === "init-loader" ? ( + {isSelfManaged ? ( +
+
+

{t("workspace_analytics.not_available_ce.title")}

+

+ {t("workspace_analytics.not_available_ce.description")} +

+
+
+ ) : workspaceProjectIds.length > 0 || loader === "init-loader" ? (
diff --git a/packages/i18n/src/locales/cs/workspace.json b/packages/i18n/src/locales/cs/workspace.json index 94b5a314412..642adb92ea7 100644 --- a/packages/i18n/src/locales/cs/workspace.json +++ b/packages/i18n/src/locales/cs/workspace.json @@ -148,7 +148,11 @@ "workitem_resolved_vs_pending": "Vyřešené vs. čekající pracovní položky", "projects_by_status": "Projekty podle stavu", "active_users": "Aktivní uživatelé", - "intake_trends": "Trendy příjmů" + "intake_trends": "Trendy příjmů", + "not_available_ce": { + "title": "Analytics is not available on Community Edition", + "description": "Advanced analytics is a Pro feature. Upgrade to Plane Pro or Cloud to access workspace analytics." + } }, "workspace_projects": { "label": "{count, plural, one {Projekt} few {Projekty} other {Projektů}}", diff --git a/packages/i18n/src/locales/de/workspace.json b/packages/i18n/src/locales/de/workspace.json index 46408ba8bdb..7ce426309a7 100644 --- a/packages/i18n/src/locales/de/workspace.json +++ b/packages/i18n/src/locales/de/workspace.json @@ -148,7 +148,11 @@ "workitem_resolved_vs_pending": "Gelöste vs. ausstehende Arbeitsaufgaben", "projects_by_status": "Projekte nach Status", "active_users": "Aktive Nutzer", - "intake_trends": "Aufnahmetrends" + "intake_trends": "Aufnahmetrends", + "not_available_ce": { + "title": "Analytics is not available on Community Edition", + "description": "Advanced analytics is a Pro feature. Upgrade to Plane Pro or Cloud to access workspace analytics." + } }, "workspace_projects": { "label": "{count, plural, one {Projekt} few {Projekte} other {Projekte}}", diff --git a/packages/i18n/src/locales/en/workspace.json b/packages/i18n/src/locales/en/workspace.json index 7e75895ca6f..943ab41b77a 100644 --- a/packages/i18n/src/locales/en/workspace.json +++ b/packages/i18n/src/locales/en/workspace.json @@ -148,7 +148,11 @@ "workitem_resolved_vs_pending": "Work items resolved vs pending", "projects_by_status": "Projects by status", "active_users": "Active users", - "intake_trends": "Intake Trends" + "intake_trends": "Intake Trends", + "not_available_ce": { + "title": "Analytics is not available on Community Edition", + "description": "Advanced analytics is a Pro feature. Upgrade to Plane Pro or Cloud to access workspace analytics." + } }, "workspace_projects": { "label": "{count, plural, one {Project} other {Projects}}", diff --git a/packages/i18n/src/locales/es/workspace.json b/packages/i18n/src/locales/es/workspace.json index f671d0b145a..fce7a1b7c6b 100644 --- a/packages/i18n/src/locales/es/workspace.json +++ b/packages/i18n/src/locales/es/workspace.json @@ -148,7 +148,11 @@ "workitem_resolved_vs_pending": "Elementos de trabajo resueltos vs pendientes", "projects_by_status": "Proyectos por estado", "active_users": "Usuarios activos", - "intake_trends": "Tendencias de admisión" + "intake_trends": "Tendencias de admisión", + "not_available_ce": { + "title": "Analytics is not available on Community Edition", + "description": "Advanced analytics is a Pro feature. Upgrade to Plane Pro or Cloud to access workspace analytics." + } }, "workspace_projects": { "label": "{count, plural, one {Proyecto} other {Proyectos}}", diff --git a/packages/i18n/src/locales/fr/workspace.json b/packages/i18n/src/locales/fr/workspace.json index 088f7b54e78..bfa73f7342c 100644 --- a/packages/i18n/src/locales/fr/workspace.json +++ b/packages/i18n/src/locales/fr/workspace.json @@ -148,7 +148,11 @@ "workitem_resolved_vs_pending": "Éléments de travail résolus vs en attente", "projects_by_status": "Projets par statut", "active_users": "Utilisateurs actifs", - "intake_trends": "Tendances des admissions" + "intake_trends": "Tendances des admissions", + "not_available_ce": { + "title": "Analytics is not available on Community Edition", + "description": "Advanced analytics is a Pro feature. Upgrade to Plane Pro or Cloud to access workspace analytics." + } }, "workspace_projects": { "label": "{count, plural, one {Projet} other {Projets}}", diff --git a/packages/i18n/src/locales/id/workspace.json b/packages/i18n/src/locales/id/workspace.json index 911b67edb2a..0d353c17bd6 100644 --- a/packages/i18n/src/locales/id/workspace.json +++ b/packages/i18n/src/locales/id/workspace.json @@ -148,7 +148,11 @@ "workitem_resolved_vs_pending": "Item kerja yang diselesaikan vs tertunda", "projects_by_status": "Proyek berdasarkan status", "active_users": "Pengguna aktif", - "intake_trends": "Tren Penerimaan" + "intake_trends": "Tren Penerimaan", + "not_available_ce": { + "title": "Analytics is not available on Community Edition", + "description": "Advanced analytics is a Pro feature. Upgrade to Plane Pro or Cloud to access workspace analytics." + } }, "workspace_projects": { "label": "{count, plural, one {Proyek} other {Proyek}}", diff --git a/packages/i18n/src/locales/it/workspace.json b/packages/i18n/src/locales/it/workspace.json index 64b7e1258ea..47bcac381e2 100644 --- a/packages/i18n/src/locales/it/workspace.json +++ b/packages/i18n/src/locales/it/workspace.json @@ -148,7 +148,11 @@ "workitem_resolved_vs_pending": "Elementi di lavoro risolti vs in sospeso", "projects_by_status": "Progetti per stato", "active_users": "Utenti attivi", - "intake_trends": "Tendenze di ammissione" + "intake_trends": "Tendenze di ammissione", + "not_available_ce": { + "title": "Analytics is not available on Community Edition", + "description": "Advanced analytics is a Pro feature. Upgrade to Plane Pro or Cloud to access workspace analytics." + } }, "workspace_projects": { "label": "{count, plural, one {Progetto} other {Progetti}}", diff --git a/packages/i18n/src/locales/ja/workspace.json b/packages/i18n/src/locales/ja/workspace.json index 40b2c751163..e339dbc964f 100644 --- a/packages/i18n/src/locales/ja/workspace.json +++ b/packages/i18n/src/locales/ja/workspace.json @@ -148,7 +148,11 @@ "workitem_resolved_vs_pending": "解決済み vs 保留中の作業項目", "projects_by_status": "ステータス別のプロジェクト", "active_users": "アクティブユーザー", - "intake_trends": "受け入れの傾向" + "intake_trends": "受け入れの傾向", + "not_available_ce": { + "title": "Analytics is not available on Community Edition", + "description": "Advanced analytics is a Pro feature. Upgrade to Plane Pro or Cloud to access workspace analytics." + } }, "workspace_projects": { "label": "{count, plural, one {プロジェクト} other {プロジェクト}}", diff --git a/packages/i18n/src/locales/ko/workspace.json b/packages/i18n/src/locales/ko/workspace.json index 196b8e20a69..bed79624561 100644 --- a/packages/i18n/src/locales/ko/workspace.json +++ b/packages/i18n/src/locales/ko/workspace.json @@ -148,7 +148,11 @@ "workitem_resolved_vs_pending": "해결된 vs 대기 중인 작업 항목", "projects_by_status": "상태별 프로젝트", "active_users": "활성 사용자", - "intake_trends": "수용 추세" + "intake_trends": "수용 추세", + "not_available_ce": { + "title": "Analytics is not available on Community Edition", + "description": "Advanced analytics is a Pro feature. Upgrade to Plane Pro or Cloud to access workspace analytics." + } }, "workspace_projects": { "label": "{count, plural, one {프로젝트} other {프로젝트}}", diff --git a/packages/i18n/src/locales/pl/workspace.json b/packages/i18n/src/locales/pl/workspace.json index 53d57357e86..f5ae4f3d27a 100644 --- a/packages/i18n/src/locales/pl/workspace.json +++ b/packages/i18n/src/locales/pl/workspace.json @@ -148,7 +148,11 @@ "workitem_resolved_vs_pending": "Rozwiązane vs oczekujące elementy pracy", "projects_by_status": "Projekty według statusu", "active_users": "Aktywni użytkownicy", - "intake_trends": "Trendy przyjęć" + "intake_trends": "Trendy przyjęć", + "not_available_ce": { + "title": "Analytics is not available on Community Edition", + "description": "Advanced analytics is a Pro feature. Upgrade to Plane Pro or Cloud to access workspace analytics." + } }, "workspace_projects": { "label": "{count, plural, one {Projekt} few {Projekty} other {Projektów}}", diff --git a/packages/i18n/src/locales/pt-BR/workspace.json b/packages/i18n/src/locales/pt-BR/workspace.json index 5570c56dc3a..b81b4c86180 100644 --- a/packages/i18n/src/locales/pt-BR/workspace.json +++ b/packages/i18n/src/locales/pt-BR/workspace.json @@ -148,7 +148,11 @@ "workitem_resolved_vs_pending": "Itens de trabalho resolvidos vs pendentes", "projects_by_status": "Projetos por status", "active_users": "Usuários ativos", - "intake_trends": "Tendências de entrada" + "intake_trends": "Tendências de entrada", + "not_available_ce": { + "title": "Analytics is not available on Community Edition", + "description": "Advanced analytics is a Pro feature. Upgrade to Plane Pro or Cloud to access workspace analytics." + } }, "workspace_projects": { "label": "{count, plural, one {Projeto} other {Projetos}}", diff --git a/packages/i18n/src/locales/ro/workspace.json b/packages/i18n/src/locales/ro/workspace.json index abdc8cbba93..9295a216910 100644 --- a/packages/i18n/src/locales/ro/workspace.json +++ b/packages/i18n/src/locales/ro/workspace.json @@ -148,7 +148,11 @@ "workitem_resolved_vs_pending": "Elemente de lucru rezolvate vs în așteptare", "projects_by_status": "Proiecte după statut", "active_users": "Utilizatori activi", - "intake_trends": "Tendințe de admitere" + "intake_trends": "Tendințe de admitere", + "not_available_ce": { + "title": "Analytics is not available on Community Edition", + "description": "Advanced analytics is a Pro feature. Upgrade to Plane Pro or Cloud to access workspace analytics." + } }, "workspace_projects": { "label": "{count, plural, one {Proiect} other {Proiecte}}", diff --git a/packages/i18n/src/locales/ru/workspace.json b/packages/i18n/src/locales/ru/workspace.json index 1bcd7202166..14f90376d99 100644 --- a/packages/i18n/src/locales/ru/workspace.json +++ b/packages/i18n/src/locales/ru/workspace.json @@ -148,7 +148,11 @@ "workitem_resolved_vs_pending": "Решенные vs ожидающие рабочие элементы", "projects_by_status": "Проекты по статусу", "active_users": "Активные пользователи", - "intake_trends": "Тенденции приёма" + "intake_trends": "Тенденции приёма", + "not_available_ce": { + "title": "Analytics is not available on Community Edition", + "description": "Advanced analytics is a Pro feature. Upgrade to Plane Pro or Cloud to access workspace analytics." + } }, "workspace_projects": { "label": "{count, plural, one {Проект} other {Проекты}}", diff --git a/packages/i18n/src/locales/sk/workspace.json b/packages/i18n/src/locales/sk/workspace.json index 55a77e6ac89..95335c69132 100644 --- a/packages/i18n/src/locales/sk/workspace.json +++ b/packages/i18n/src/locales/sk/workspace.json @@ -148,7 +148,11 @@ "workitem_resolved_vs_pending": "Vyriešené vs. čakajúce pracovné položky", "projects_by_status": "Projekty podľa stavu", "active_users": "Aktívni používatelia", - "intake_trends": "Trendy prijímania" + "intake_trends": "Trendy prijímania", + "not_available_ce": { + "title": "Analytics is not available on Community Edition", + "description": "Advanced analytics is a Pro feature. Upgrade to Plane Pro or Cloud to access workspace analytics." + } }, "workspace_projects": { "label": "{count, plural, one {Projekt} few {Projekty} other {Projektov}}", diff --git a/packages/i18n/src/locales/tr-TR/workspace.json b/packages/i18n/src/locales/tr-TR/workspace.json index 19f64e7c48e..12a1b6bdfdb 100644 --- a/packages/i18n/src/locales/tr-TR/workspace.json +++ b/packages/i18n/src/locales/tr-TR/workspace.json @@ -148,7 +148,11 @@ "workitem_resolved_vs_pending": "Çözülen vs bekleyen iş öğeleri", "projects_by_status": "Durumuna göre projeler", "active_users": "Aktif kullanıcılar", - "intake_trends": "Alım Eğilimleri" + "intake_trends": "Alım Eğilimleri", + "not_available_ce": { + "title": "Analytics is not available on Community Edition", + "description": "Advanced analytics is a Pro feature. Upgrade to Plane Pro or Cloud to access workspace analytics." + } }, "workspace_projects": { "label": "{count, plural, one {Proje} other {Projeler}}", diff --git a/packages/i18n/src/locales/ua/workspace.json b/packages/i18n/src/locales/ua/workspace.json index cb288fd2d89..554b273b695 100644 --- a/packages/i18n/src/locales/ua/workspace.json +++ b/packages/i18n/src/locales/ua/workspace.json @@ -148,7 +148,11 @@ "workitem_resolved_vs_pending": "Вирішені vs очікуючі робочі елементи", "projects_by_status": "Проєкти за статусом", "active_users": "Активні користувачі", - "intake_trends": "Тенденції прийому" + "intake_trends": "Тенденції прийому", + "not_available_ce": { + "title": "Analytics is not available on Community Edition", + "description": "Advanced analytics is a Pro feature. Upgrade to Plane Pro or Cloud to access workspace analytics." + } }, "workspace_projects": { "label": "{count, plural, one {Проєкт} few {Проєкти} other {Проєктів}}", diff --git a/packages/i18n/src/locales/vi-VN/workspace.json b/packages/i18n/src/locales/vi-VN/workspace.json index 4b7418d7d9f..d81a5b8657f 100644 --- a/packages/i18n/src/locales/vi-VN/workspace.json +++ b/packages/i18n/src/locales/vi-VN/workspace.json @@ -148,7 +148,11 @@ "workitem_resolved_vs_pending": "Mục công việc đã giải quyết vs đang chờ", "projects_by_status": "Dự án theo trạng thái", "active_users": "Người dùng hoạt động", - "intake_trends": "Xu hướng tiếp nhận" + "intake_trends": "Xu hướng tiếp nhận", + "not_available_ce": { + "title": "Analytics is not available on Community Edition", + "description": "Advanced analytics is a Pro feature. Upgrade to Plane Pro or Cloud to access workspace analytics." + } }, "workspace_projects": { "label": "{count, plural, one {dự án} other {dự án}}", diff --git a/packages/i18n/src/locales/zh-CN/workspace.json b/packages/i18n/src/locales/zh-CN/workspace.json index a4f06dc7cf1..5f8bea5ff3e 100644 --- a/packages/i18n/src/locales/zh-CN/workspace.json +++ b/packages/i18n/src/locales/zh-CN/workspace.json @@ -148,7 +148,11 @@ "workitem_resolved_vs_pending": "已解决 vs 待处理的工作项", "projects_by_status": "按状态分类的项目", "active_users": "活跃用户", - "intake_trends": "入学趋势" + "intake_trends": "入学趋势", + "not_available_ce": { + "title": "Analytics is not available on Community Edition", + "description": "Advanced analytics is a Pro feature. Upgrade to Plane Pro or Cloud to access workspace analytics." + } }, "workspace_projects": { "label": "{count, plural, one {项目} other {项目}}", diff --git a/packages/i18n/src/locales/zh-TW/workspace.json b/packages/i18n/src/locales/zh-TW/workspace.json index 3f2194ec768..9839f1ae507 100644 --- a/packages/i18n/src/locales/zh-TW/workspace.json +++ b/packages/i18n/src/locales/zh-TW/workspace.json @@ -148,7 +148,11 @@ "workitem_resolved_vs_pending": "已解決 vs 待處理的工作項目", "projects_by_status": "按狀態分類的專案", "active_users": "活躍使用者", - "intake_trends": "入學趨勢" + "intake_trends": "入學趨勢", + "not_available_ce": { + "title": "Analytics is not available on Community Edition", + "description": "Advanced analytics is a Pro feature. Upgrade to Plane Pro or Cloud to access workspace analytics." + } }, "workspace_projects": { "label": "{count, plural, one {專案} other {專案}}",