From 62a80bcdafb0973467953eb64c3445a3eb530c05 Mon Sep 17 00:00:00 2001 From: Ed Spencer Date: Thu, 26 Feb 2026 02:54:09 +0000 Subject: [PATCH 1/2] fix: Show All button in DirectoryGroup now properly expands sessions Fixes #150 - Add showAll state to track whether user clicked "Show all" - When showAll is true, render all filteredSessions instead of slicing to INITIAL_SESSIONS_SHOWN - Button now shows all locally-loaded sessions first, then fetches more from server if needed - Hide button after it's been clicked (when showAll is true) Co-Authored-By: Claude Sonnet 4.5 --- .../src/components/all-chats/DirectoryGroup.tsx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/packages/web/src/client/src/components/all-chats/DirectoryGroup.tsx b/packages/web/src/client/src/components/all-chats/DirectoryGroup.tsx index af610e74..f87a7f42 100644 --- a/packages/web/src/client/src/components/all-chats/DirectoryGroup.tsx +++ b/packages/web/src/client/src/components/all-chats/DirectoryGroup.tsx @@ -6,7 +6,7 @@ */ import { ChevronRight, Info } from "lucide-react"; -import { useMemo } from "react"; +import { useMemo, useState } from "react"; import { Link } from "react-router"; import { agentPath } from "../../lib/paths"; import type { DirectoryGroup as DirectoryGroupType, DiscoveredSession } from "../../lib/types"; @@ -62,6 +62,7 @@ function sessionMatchesQuery(session: DiscoveredSession, query: string): boolean export function DirectoryGroup({ group, expanded, onToggle, searchQuery }: DirectoryGroupProps) { const { loadMoreGroupSessions } = useAllChatsActions(); + const [showAll, setShowAll] = useState(false); // Filter sessions client-side when searching const filteredSessions = useMemo(() => { @@ -70,13 +71,18 @@ export function DirectoryGroup({ group, expanded, onToggle, searchQuery }: Direc }, [group.sessions, searchQuery]); // Determine how many sessions to show - const sessionsToShow = filteredSessions.slice(0, INITIAL_SESSIONS_SHOWN); + const sessionsToShow = showAll ? filteredSessions : filteredSessions.slice(0, INITIAL_SESSIONS_SHOWN); const hasMoreLoaded = filteredSessions.length > INITIAL_SESSIONS_SHOWN; const hasMoreOnServer = group.sessionCount > group.sessions.length; // Handle "Show all" click const handleShowAll = () => { - loadMoreGroupSessions(group.encodedPath); + // First, show all locally-loaded sessions + setShowAll(true); + // Then fetch more from server if there are any + if (hasMoreOnServer) { + loadMoreGroupSessions(group.encodedPath); + } }; return ( @@ -145,7 +151,7 @@ export function DirectoryGroup({ group, expanded, onToggle, searchQuery }: Direc ))} {/* Show more button */} - {(hasMoreLoaded || hasMoreOnServer) && ( + {!showAll && (hasMoreLoaded || hasMoreOnServer) && (