@@ -249,6 +249,29 @@ function SessionsPage() {
249249 const { desktopSidebarHidden, setDesktopSidebarHidden, toggleDesktopSidebar } = useSessionSidebarVisibility ( )
250250 const [ mobileSidebarOpen , setMobileSidebarOpen ] = useState ( false )
251251 const [ sessionSearchQuery , setSessionSearchQuery ] = useState ( '' )
252+ const sessionMatch = matchRoute ( { to : '/sessions/$sessionId' , fuzzy : true } )
253+ const chatRouteMatch = matchRoute ( { to : '/sessions/$sessionId' , fuzzy : false } )
254+ const selectedSessionId = sessionMatch && sessionMatch . sessionId !== 'new' ? sessionMatch . sessionId : null
255+
256+ const selectedSessionPreset = useMemo < NewSessionPreset | undefined > ( ( ) => {
257+ if ( ! selectedSessionId ) {
258+ return undefined
259+ }
260+ const selected = sessions . find ( ( session ) => session . id === selectedSessionId )
261+ if ( ! selected ) {
262+ return undefined
263+ }
264+
265+ const directory = selected . metadata ?. path ?. trim ( )
266+ const machineId = selected . metadata ?. machineId ?. trim ( )
267+ if ( ! directory && ! machineId ) {
268+ return undefined
269+ }
270+ return {
271+ directory : directory || undefined ,
272+ machineId : machineId || undefined
273+ }
274+ } , [ selectedSessionId , sessions ] )
252275
253276 const visibleSessions = useMemo (
254277 ( ) => filterSessionsBySearch ( sessions , sessionSearchQuery ) ,
@@ -260,12 +283,13 @@ function SessionsPage() {
260283 } , [ refetch ] )
261284
262285 const openNewSession = useCallback ( ( preset ?: NewSessionPreset ) => {
286+ const resolvedPreset = preset ?? selectedSessionPreset
263287 setMobileSidebarOpen ( false )
264288 navigate ( {
265289 to : '/sessions/new' ,
266- search : toNewSessionSearch ( preset )
290+ search : toNewSessionSearch ( resolvedPreset )
267291 } )
268- } , [ navigate ] )
292+ } , [ navigate , selectedSessionPreset ] )
269293
270294 const quickCreateInProject = useCallback ( async ( preset ?: NewSessionPreset ) => {
271295 if ( isQuickCreatingSession ) {
@@ -337,9 +361,6 @@ function SessionsPage() {
337361 ] )
338362
339363 const projectCount = new Set ( visibleSessions . map ( s => s . metadata ?. worktree ?. basePath ?? s . metadata ?. path ?? 'Other' ) ) . size
340- const sessionMatch = matchRoute ( { to : '/sessions/$sessionId' , fuzzy : true } )
341- const chatRouteMatch = matchRoute ( { to : '/sessions/$sessionId' , fuzzy : false } )
342- const selectedSessionId = sessionMatch && sessionMatch . sessionId !== 'new' ? sessionMatch . sessionId : null
343364 const isSessionChatRoute = Boolean ( chatRouteMatch && chatRouteMatch . sessionId !== 'new' )
344365 const isSessionsIndex = pathname === '/sessions' || pathname === '/sessions/'
345366 const showDesktopSidebar = isSessionsIndex || ! desktopSidebarHidden
0 commit comments