From 1498227b919b7315d0770cd53fb35e86081ec84b Mon Sep 17 00:00:00 2001 From: "claude[bot]" <41898282+claude[bot]@users.noreply.github.com> Date: Thu, 23 Apr 2026 17:38:55 +0000 Subject: [PATCH 1/2] fix: show version tag/name in Plans page breadcrumb instead of UUID Closes #1037 Co-authored-by: Aditya Choudhari --- .../page.$deploymentId.plans.$planId.tsx | 10 ++-- packages/trpc/src/routes/deployment-plans.ts | 49 +++++++++++-------- 2 files changed, 35 insertions(+), 24 deletions(-) diff --git a/apps/web/app/routes/ws/deployments/page.$deploymentId.plans.$planId.tsx b/apps/web/app/routes/ws/deployments/page.$deploymentId.plans.$planId.tsx index 621b5e0cb..cdb937bbc 100644 --- a/apps/web/app/routes/ws/deployments/page.$deploymentId.plans.$planId.tsx +++ b/apps/web/app/routes/ws/deployments/page.$deploymentId.plans.$planId.tsx @@ -35,7 +35,8 @@ export function meta() { ]; } -type Result = RouterOutputs["deployment"]["plans"]["results"][number]; +type Result = + RouterOutputs["deployment"]["plans"]["results"]["results"][number]; function resultTitle(result: Result) { return `${result.environment.name} · ${result.resource.name} · ${result.agent.name}`; @@ -142,7 +143,8 @@ export default function DeploymentPlanDetail() { { enabled: !!planId, refetchInterval: 5000 }, ); - const results = resultsQuery.data ?? []; + const version = resultsQuery.data?.version; + const results = resultsQuery.data?.results ?? []; const activeResult = results.find((r) => r.resultId === resultId); return ( @@ -174,7 +176,9 @@ export default function DeploymentPlanDetail() { - {planId} + + {version?.tag ?? version?.name ?? planId} + diff --git a/packages/trpc/src/routes/deployment-plans.ts b/packages/trpc/src/routes/deployment-plans.ts index fdb362c07..eec5501b8 100644 --- a/packages/trpc/src/routes/deployment-plans.ts +++ b/packages/trpc/src/routes/deployment-plans.ts @@ -136,7 +136,11 @@ export const deploymentPlansRouter = router({ ) .query(async ({ input, ctx }) => { const plan = await ctx.db - .select({ id: schema.deploymentPlan.id }) + .select({ + id: schema.deploymentPlan.id, + versionTag: schema.deploymentPlan.versionTag, + versionName: schema.deploymentPlan.versionName, + }) .from(schema.deploymentPlan) .where( and( @@ -184,26 +188,29 @@ export const deploymentPlansRouter = router({ .where(eq(schema.deploymentPlanTarget.planId, input.planId)) .orderBy(schema.environment.name, schema.resource.name); - return rows.map((r) => { - const agent = r.dispatchContext.jobAgent ?? {}; - return { - resultId: r.resultId, - targetId: r.targetId, - environment: { id: r.environmentId, name: r.environmentName }, - resource: { id: r.resourceId, name: r.resourceName }, - agent: { - id: (agent.id as string | undefined) ?? "", - name: (agent.name as string | undefined) ?? "", - type: (agent.type as string | undefined) ?? "", - }, - status: r.status, - hasChanges: r.hasChanges, - message: r.message, - contentHash: r.contentHash, - startedAt: r.startedAt, - completedAt: r.completedAt, - }; - }); + return { + version: { tag: plan.versionTag, name: plan.versionName }, + results: rows.map((r) => { + const agent = r.dispatchContext.jobAgent ?? {}; + return { + resultId: r.resultId, + targetId: r.targetId, + environment: { id: r.environmentId, name: r.environmentName }, + resource: { id: r.resourceId, name: r.resourceName }, + agent: { + id: (agent.id as string | undefined) ?? "", + name: (agent.name as string | undefined) ?? "", + type: (agent.type as string | undefined) ?? "", + }, + status: r.status, + hasChanges: r.hasChanges, + message: r.message, + contentHash: r.contentHash, + startedAt: r.startedAt, + completedAt: r.completedAt, + }; + }), + }; }), resultDiff: protectedProcedure From babf7b315d6f46eba7ee0bafaca2d9e5e03897d3 Mon Sep 17 00:00:00 2001 From: Aditya Choudhari Date: Thu, 23 Apr 2026 10:50:44 -0700 Subject: [PATCH 2/2] cleanup --- .../ws/deployments/page.$deploymentId.plans.$planId.tsx | 8 ++++---- packages/trpc/src/routes/deployment-plans.ts | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/apps/web/app/routes/ws/deployments/page.$deploymentId.plans.$planId.tsx b/apps/web/app/routes/ws/deployments/page.$deploymentId.plans.$planId.tsx index cdb937bbc..629b4c56b 100644 --- a/apps/web/app/routes/ws/deployments/page.$deploymentId.plans.$planId.tsx +++ b/apps/web/app/routes/ws/deployments/page.$deploymentId.plans.$planId.tsx @@ -36,7 +36,7 @@ export function meta() { } type Result = - RouterOutputs["deployment"]["plans"]["results"]["results"][number]; + RouterOutputs["deployment"]["plans"]["results"]["items"][number]; function resultTitle(result: Result) { return `${result.environment.name} · ${result.resource.name} · ${result.agent.name}`; @@ -144,7 +144,7 @@ export default function DeploymentPlanDetail() { ); const version = resultsQuery.data?.version; - const results = resultsQuery.data?.results ?? []; + const results = resultsQuery.data?.items ?? []; const activeResult = results.find((r) => r.resultId === resultId); return ( @@ -176,8 +176,8 @@ export default function DeploymentPlanDetail() { - - {version?.tag ?? version?.name ?? planId} + + {version?.name ?? version?.tag ?? planId} diff --git a/packages/trpc/src/routes/deployment-plans.ts b/packages/trpc/src/routes/deployment-plans.ts index eec5501b8..13329580a 100644 --- a/packages/trpc/src/routes/deployment-plans.ts +++ b/packages/trpc/src/routes/deployment-plans.ts @@ -190,7 +190,7 @@ export const deploymentPlansRouter = router({ return { version: { tag: plan.versionTag, name: plan.versionName }, - results: rows.map((r) => { + items: rows.map((r) => { const agent = r.dispatchContext.jobAgent ?? {}; return { resultId: r.resultId,