diff --git a/apps/webapp/app/components/primitives/CopyableText.tsx b/apps/webapp/app/components/primitives/CopyableText.tsx
index 99664b3dc3..67e01af795 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);
@@ -35,6 +37,7 @@ export function CopyableText({
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..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
@@ -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}`}
+ content={`View batches filtered by ${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