Keep selected activity history stable

This commit is contained in:
wuyang6
2026-05-14 14:13:48 +08:00
parent 2203ba6f70
commit 54d85609d1
@@ -168,21 +168,32 @@ export function ActivityPanel() {
() => collectLiveRunItems(liveRunStatus),
[liveRunStatus],
);
const selectedMessageId = selectedId ? activityMessageId(selectedId) : null;
const selectedMessageItems = selectedMessageId
? messageItems.filter(
(item) => activityMessageId(item.id) === selectedMessageId,
)
: [];
const shouldUseLiveItems =
!selectedMessageId &&
liveItems.length > 0 &&
activeSessionId !== null &&
(activeSessionId !== replayedSessionId || hasActiveRun(liveRunStatus));
const items = shouldUseLiveItems ? liveItems : messageItems;
const selectedMessageId = selectedId ? activityMessageId(selectedId) : null;
const selectedItems = selectedMessageId
? items.filter((item) => activityMessageId(item.id) === selectedMessageId)
: [];
const visibleItems =
selectedMessageId && selectedItems.length > 0 ? selectedItems : items;
selectedMessageId && selectedMessageItems.length > 0
? selectedMessageItems
: selectedMessageId && selectedItems.length > 0
? selectedItems
: items;
const selectedActivityMissing = Boolean(
selectedMessageId &&
!shouldUseLiveItems &&
items.length > 0 &&
messageItems.length > 0 &&
selectedMessageItems.length === 0 &&
selectedItems.length === 0,
);
const prevLatestIdRef = useRef<string | null>(null);
@@ -207,13 +218,14 @@ export function ActivityPanel() {
const latestId = items.at(-1)?.id ?? null;
if (
mode === "activity" &&
!selectedId &&
latestId &&
latestId !== prevLatestIdRef.current
) {
openActivity();
}
prevLatestIdRef.current = latestId;
}, [items, mode, openActivity]);
}, [items, mode, openActivity, selectedId]);
if (!open) return null;