diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx index e803681801d..ea7f11e4166 100644 --- a/packages/app/src/pages/layout.tsx +++ b/packages/app/src/pages/layout.tsx @@ -518,7 +518,6 @@ export default function Layout(props: ParentProps) { for (const dir of dirs) { const [dirStore] = globalSync.child(dir) const dirSessions = dirStore.session - .filter((session) => session.directory === dirStore.path.directory) .filter((session) => !session.parentID && !session.time?.archived) .toSorted(sortSessions) result.push(...dirSessions) @@ -526,10 +525,7 @@ export default function Layout(props: ParentProps) { return result } const [projectStore] = globalSync.child(project.worktree) - return projectStore.session - .filter((session) => session.directory === projectStore.path.directory) - .filter((session) => !session.parentID && !session.time?.archived) - .toSorted(sortSessions) + return projectStore.session.filter((session) => !session.parentID && !session.time?.archived).toSorted(sortSessions) }) type PrefetchQueue = { @@ -1454,10 +1450,7 @@ export default function Layout(props: ParentProps) { const [menuOpen, setMenuOpen] = createSignal(false) const slug = createMemo(() => base64Encode(props.directory)) const sessions = createMemo(() => - workspaceStore.session - .filter((session) => session.directory === workspaceStore.path.directory) - .filter((session) => !session.parentID && !session.time?.archived) - .toSorted(sortSessions), + workspaceStore.session.filter((session) => !session.parentID && !session.time?.archived).toSorted(sortSessions), ) const local = createMemo(() => props.directory === props.project.worktree) const workspaceValue = createMemo(() => { @@ -1632,7 +1625,6 @@ export default function Layout(props: ParentProps) { const sessions = (directory: string) => { const [data] = globalSync.child(directory) return data.session - .filter((session) => session.directory === data.path.directory) .filter((session) => !session.parentID && !session.time?.archived) .toSorted(sortSessions) .slice(0, 2) @@ -1641,7 +1633,6 @@ export default function Layout(props: ParentProps) { const projectSessions = () => { const [data] = globalSync.child(props.project.worktree) return data.session - .filter((session) => session.directory === data.path.directory) .filter((session) => !session.parentID && !session.time?.archived) .toSorted(sortSessions) .slice(0, 2) @@ -1736,10 +1727,7 @@ export default function Layout(props: ParentProps) { const [workspaceStore, setWorkspaceStore] = globalSync.child(props.project.worktree) const slug = createMemo(() => base64Encode(props.project.worktree)) const sessions = createMemo(() => - workspaceStore.session - .filter((session) => session.directory === workspaceStore.path.directory) - .filter((session) => !session.parentID && !session.time?.archived) - .toSorted(sortSessions), + workspaceStore.session.filter((session) => !session.parentID && !session.time?.archived).toSorted(sortSessions), ) const loading = createMemo(() => workspaceStore.status !== "complete" && sessions().length === 0) const hasMore = createMemo(() => workspaceStore.sessionTotal > workspaceStore.session.length) diff --git a/packages/opencode/src/server/routes/session.ts b/packages/opencode/src/server/routes/session.ts index a98624dfae2..515e1c8ae4f 100644 --- a/packages/opencode/src/server/routes/session.ts +++ b/packages/opencode/src/server/routes/session.ts @@ -56,7 +56,13 @@ export const SessionRoutes = lazy(() => const term = query.search?.toLowerCase() const sessions: Session.Info[] = [] for await (const session of Session.list()) { - if (query.directory !== undefined && session.directory !== query.directory) continue + const normalizedSessionDir = Filesystem.normalize(session.directory) + if ( + normalizedQueryDir !== undefined && + normalizedSessionDir !== normalizedQueryDir && + !Filesystem.contains(normalizedQueryDir, normalizedSessionDir) + ) + continue if (query.roots && session.parentID) continue if (query.start !== undefined && session.time.updated < query.start) continue if (term !== undefined && !session.title.toLowerCase().includes(term)) continue