From be01ae90a6f47a128c4a959f3b5fa68b0b9b0edb Mon Sep 17 00:00:00 2001 From: Matt Aitken Date: Mon, 23 Feb 2026 11:03:25 +0000 Subject: [PATCH] Fix: show the deprecation panel if it's an old project and v3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Without doing an expensive query we can’t tell if it’s definitely a v3 projects – like getting run counts. So let’s just assume if the project hasn’t been upgraded to v4 (by running dev/deploy CLI with v4) AND the project is older than the v4 release then it’s v3. --- apps/webapp/app/components/navigation/SideMenu.tsx | 11 +++++++++-- .../app/presenters/OrganizationsPresenter.server.ts | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/apps/webapp/app/components/navigation/SideMenu.tsx b/apps/webapp/app/components/navigation/SideMenu.tsx index db86425b67b..dbc18b2bc27 100644 --- a/apps/webapp/app/components/navigation/SideMenu.tsx +++ b/apps/webapp/app/components/navigation/SideMenu.tsx @@ -127,7 +127,7 @@ type SideMenuUser = Pick< }; export type SideMenuProject = Pick< MatchedProject, - "id" | "name" | "slug" | "version" | "environments" | "engine" + "id" | "name" | "slug" | "version" | "environments" | "engine" | "createdAt" >; export type SideMenuEnvironment = MatchedEnvironment; @@ -611,6 +611,7 @@ export function SideMenu({ @@ -641,15 +642,21 @@ export function SideMenu({ function V3DeprecationPanel({ isCollapsed, isV3, + projectCreatedAt, hasIncident, isManagedCloud, }: { isCollapsed: boolean; isV3: boolean; + projectCreatedAt: Date; hasIncident: boolean; isManagedCloud: boolean; }) { - if (!isManagedCloud || !isV3 || hasIncident) { + // Only show for projects created before v4 was released + const V4_RELEASE_DATE = new Date("2025-09-01"); + const isLikelyV3 = isV3 && new Date(projectCreatedAt) < V4_RELEASE_DATE; + + if (!isManagedCloud || !isLikelyV3 || hasIncident) { return null; } diff --git a/apps/webapp/app/presenters/OrganizationsPresenter.server.ts b/apps/webapp/app/presenters/OrganizationsPresenter.server.ts index c229a0d7f45..52e629ffedb 100644 --- a/apps/webapp/app/presenters/OrganizationsPresenter.server.ts +++ b/apps/webapp/app/presenters/OrganizationsPresenter.server.ts @@ -112,6 +112,7 @@ export class OrganizationsPresenter { organization, project: { ...fullProject, + createdAt: fullProject.createdAt, environments: sortEnvironments( fullProject.environments.filter((env) => { if (env.type !== "DEVELOPMENT") return true;