From 8ce0966987a0de46d64307c02f729a290f2f3cf3 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Mon, 15 Dec 2025 10:13:29 -0600 Subject: wip(desktop): progress --- packages/desktop/src/pages/layout.tsx | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) (limited to 'packages/desktop/src/pages') diff --git a/packages/desktop/src/pages/layout.tsx b/packages/desktop/src/pages/layout.tsx index 6632abe3a..d10eadea9 100644 --- a/packages/desktop/src/pages/layout.tsx +++ b/packages/desktop/src/pages/layout.tsx @@ -44,6 +44,16 @@ export default function Layout(props: ParentProps) { activeDraggable: undefined as string | undefined, }) + let scrollContainerRef: HTMLDivElement | undefined + + function scrollToSession(sessionId: string) { + if (!scrollContainerRef) return + const element = scrollContainerRef.querySelector(`[data-session-id="${sessionId}"]`) + if (element) { + element.scrollIntoView({ block: "center", behavior: "smooth" }) + } + } + const params = useParams() const globalSDK = useGlobalSDK() const globalSync = useGlobalSync() @@ -111,7 +121,9 @@ export default function Layout(props: ParentProps) { // If target is within bounds, navigate to that session if (targetIndex >= 0 && targetIndex < sessions.length) { - navigateToSession(sessions[targetIndex]) + const session = sessions[targetIndex] + navigateToSession(session) + queueMicrotask(() => scrollToSession(session.id)) return } @@ -130,6 +142,7 @@ export default function Layout(props: ParentProps) { // If going down (offset > 0), go to first session; if going up (offset < 0), go to last session const targetSession = offset > 0 ? nextProjectSessions[0] : nextProjectSessions[nextProjectSessions.length - 1] navigate(`/${base64Encode(nextProject.worktree)}/session/${targetSession.id}`) + queueMicrotask(() => scrollToSession(targetSession.id)) } async function archiveSession(session: Session) { @@ -418,6 +431,7 @@ export default function Layout(props: ParentProps) { return ( <>