From 8725edf0d377eac78dd59abc111bdbd9468669e6 Mon Sep 17 00:00:00 2001 From: James Ritchie Date: Thu, 18 Sep 2025 18:14:03 +0100 Subject: [PATCH 1/4] Pass up asChild --- apps/webapp/app/components/primitives/CopyableText.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apps/webapp/app/components/primitives/CopyableText.tsx b/apps/webapp/app/components/primitives/CopyableText.tsx index 99664b3dc3..6ad0abf417 100644 --- a/apps/webapp/app/components/primitives/CopyableText.tsx +++ b/apps/webapp/app/components/primitives/CopyableText.tsx @@ -8,10 +8,12 @@ export function CopyableText({ value, copyValue, className, + asChild, }: { value: string; copyValue?: string; className?: string; + asChild?: boolean; }) { const [isHovered, setIsHovered] = useState(false); const { copy, copied } = useCopy(copyValue ?? value); @@ -50,6 +52,7 @@ export function CopyableText({ content={copied ? "Copied!" : "Copy"} className="font-sans" disableHoverableContent + asChild={asChild} /> From f0a3abef1c0033683fb193ae49a61e1049bdaeb7 Mon Sep 17 00:00:00 2001 From: James Ritchie Date: Thu, 18 Sep 2025 18:19:40 +0100 Subject: [PATCH 2/4] Include padding when asChild specified --- apps/webapp/app/components/primitives/CopyableText.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/webapp/app/components/primitives/CopyableText.tsx b/apps/webapp/app/components/primitives/CopyableText.tsx index 6ad0abf417..67e01af795 100644 --- a/apps/webapp/app/components/primitives/CopyableText.tsx +++ b/apps/webapp/app/components/primitives/CopyableText.tsx @@ -37,6 +37,7 @@ export function CopyableText({ Date: Fri, 19 Sep 2025 10:10:16 +0100 Subject: [PATCH 3/4] Adds copy buttons to useful data in Details tab --- .../route.tsx | 202 ++++++++++++------ 1 file changed, 135 insertions(+), 67 deletions(-) diff --git a/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.spans.$spanParam/route.tsx b/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.spans.$spanParam/route.tsx index 6a4e29476e..33c03f6760 100644 --- a/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.spans.$spanParam/route.tsx +++ b/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.spans.$spanParam/route.tsx @@ -14,6 +14,7 @@ import { assertNever } from "assert-never"; import { useEffect } from "react"; import { typedjson, useTypedFetcher } from "remix-typedjson"; import { ExitIcon } from "~/assets/icons/ExitIcon"; +import { FlagIcon } from "~/assets/icons/RegionIcons"; import { AdminDebugRun } from "~/components/admin/debugRun"; import { CodeBlock } from "~/components/code/CodeBlock"; import { EnvironmentCombo } from "~/components/environments/EnvironmentLabel"; @@ -22,6 +23,7 @@ import { MachineLabelCombo } from "~/components/MachineLabelCombo"; import { MachineTooltipInfo } from "~/components/MachineTooltipInfo"; import { Button, LinkButton } from "~/components/primitives/Buttons"; import { Callout } from "~/components/primitives/Callout"; +import { CopyableText } from "~/components/primitives/CopyableText"; import { DateTime, DateTimeAccurate } from "~/components/primitives/DateTime"; import { Header2, Header3 } from "~/components/primitives/Headers"; import { Paragraph } from "~/components/primitives/Paragraph"; @@ -76,7 +78,6 @@ import { } from "~/utils/pathBuilder"; import { createTimelineSpanEventsFromSpanEvents } from "~/utils/timelineSpanEvents"; import { CompleteWaitpointForm } from "../resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.waitpoints.$waitpointFriendlyId.complete/route"; -import { FlagIcon } from "~/assets/icons/RegionIcons"; export const loader = async ({ request, params }: LoaderFunctionArgs) => { const { projectParam, organizationSlug, envParam, runParam, spanParam } = @@ -409,6 +410,7 @@ function RunBody({ } content={descriptionForTaskRunStatus(run.status)} + disableHoverableContent /> @@ -422,82 +424,129 @@ function RunBody({ tasks: [run.taskIdentifier], })} > - {run.taskIdentifier} + } - content={`Filter runs by ${run.taskIdentifier}`} + content={`View runs filtered by ${run.taskIdentifier}`} + disableHoverableContent /> {run.relationships.root ? ( run.relationships.root.isParent ? ( - Root & Parent + Root & Parent run - - {run.relationships.root.taskIdentifier} - - ({run.relationships.root.friendlyId}) - - - - - ) : ( - <> - - Root - - - {run.relationships.root.taskIdentifier} - - ({run.relationships.root.friendlyId}) - - - - - {run.relationships.parent ? ( - - Parent - + - {run.relationships.parent.taskIdentifier} + - ({run.relationships.parent.friendlyId}) + + } + content={`Jump to root/parent run`} + disableHoverableContent + /> + + + ) : ( + <> + + Root run + + + + + + + + } + content={`Jump to root run`} + disableHoverableContent + /> + + + {run.relationships.parent ? ( + + Parent run + + + + + + + + } + content={`Jump to parent run`} + disableHoverableContent + /> ) : null} @@ -511,10 +560,15 @@ function RunBody({ - {run.batch.friendlyId} + } content={`Jump to ${run.batch.friendlyId}`} + disableHoverableContent /> @@ -540,7 +594,7 @@ function RunBody({ {run.version ? ( environment.type === "DEVELOPMENT" ? ( - run.version + ) : ( - {run.version} + } content={"Jump to deployment"} @@ -606,13 +660,23 @@ function RunBody({ Replayed from - - {run.replayedFromTaskRunFriendlyId} - + + + + } + content={`Jump to replayed run`} + disableHoverableContent + /> )} @@ -747,11 +811,15 @@ function RunBody({ Run ID - {run.friendlyId} + + + Internal ID - {run.id} + + + Run Engine From cc755837f8959235ad019a07b2fca85ed7457953 Mon Sep 17 00:00:00 2001 From: James Ritchie Date: Fri, 19 Sep 2025 10:17:57 +0100 Subject: [PATCH 4/4] Improve view batch tooltip message --- .../route.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.spans.$spanParam/route.tsx b/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.spans.$spanParam/route.tsx index 33c03f6760..0bbdb5a7c7 100644 --- a/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.spans.$spanParam/route.tsx +++ b/apps/webapp/app/routes/resources.orgs.$organizationSlug.projects.$projectParam.env.$envParam.runs.$runParam.spans.$spanParam/route.tsx @@ -567,7 +567,7 @@ function RunBody({ /> } - content={`Jump to ${run.batch.friendlyId}`} + content={`View batches filtered by ${run.batch.friendlyId}`} disableHoverableContent />