handleMessageClick(timelineItem)}
@@ -405,6 +484,7 @@ export const GraphActivityHud = ({
[
handleMessageClick,
handleMessageKeyDown,
+ highlightedActivityItemIds,
messageContext,
onOpenMemberProfile,
onOpenTaskDetail,
diff --git a/src/features/agent-graph/renderer/ui/GraphMemberLogPreviewHud.tsx b/src/features/agent-graph/renderer/ui/GraphMemberLogPreviewHud.tsx
index 5af8b1b8..ef2d209d 100644
--- a/src/features/agent-graph/renderer/ui/GraphMemberLogPreviewHud.tsx
+++ b/src/features/agent-graph/renderer/ui/GraphMemberLogPreviewHud.tsx
@@ -116,8 +116,8 @@ function resolveEmptyText(
if (preview?.warnings.some((warning) => warning.code === 'codex_member_wide_not_supported')) {
return 'Unsupported provider';
}
- if (loading && (!preview || preview.items.length === 0)) return 'Loading logs';
- if (error && (!preview || preview.items.length === 0)) return 'Logs unavailable';
+ if (loading && !preview) return 'Loading logs';
+ if (error && !preview) return 'Logs unavailable';
return 'No recent logs';
}
@@ -215,6 +215,26 @@ function setShellHidden(shell: HTMLDivElement): void {
shell.style.pointerEvents = 'none';
}
+function renderLoadingSkeleton(): React.JSX.Element {
+ return (
+
+ {[0, 1, 2].map((index) => (
+
+
+
+
+
+
+
+
+ ))}
+
+ );
+}
+
export const GraphMemberLogPreviewHud = ({
teamName,
nodes,
@@ -532,6 +552,7 @@ export const GraphMemberLogPreviewHud = ({
: node.label;
const preview = previewsByMember.get(normalizeMemberName(memberName));
const items = preview?.items ?? [];
+ const isInitialLoading = loading && !preview;
return (
{items.length > 0 ? (
items.slice(0, 3).map((item) => renderItem(memberName, item))
+ ) : isInitialLoading ? (
+
) : (
- {shouldShowOpenCodeDownloadAction(provider, showSkeleton) ? (
+ {shouldShowOpenCodeInstallAction(
+ provider,
+ showSkeleton,
+ openCodeRuntimeStatus
+ ) ? (
) : null}