@@ -3,7 +3,7 @@ import { Button } from './ui/button';
33import { Input } from './ui/input' ;
44import { ScrollArea } from './ui/scroll-area' ;
55import { Badge } from './ui/badge' ;
6- import { X , Plus , Settings , Shield , AlertTriangle , Moon , Sun } from 'lucide-react' ;
6+ import { X , Plus , Settings , Shield , AlertTriangle , Moon , Sun , FolderOpen , SortAsc } from 'lucide-react' ;
77import { useTheme } from '../contexts/ThemeContext' ;
88
99function ToolsSettings ( { isOpen, onClose } ) {
@@ -15,6 +15,7 @@ function ToolsSettings({ isOpen, onClose }) {
1515 const [ skipPermissions , setSkipPermissions ] = useState ( false ) ;
1616 const [ isSaving , setIsSaving ] = useState ( false ) ;
1717 const [ saveStatus , setSaveStatus ] = useState ( null ) ;
18+ const [ projectSortOrder , setProjectSortOrder ] = useState ( 'name' ) ;
1819
1920 // Common tool patterns
2021 const commonTools = [
@@ -51,18 +52,21 @@ function ToolsSettings({ isOpen, onClose }) {
5152 setAllowedTools ( settings . allowedTools || [ ] ) ;
5253 setDisallowedTools ( settings . disallowedTools || [ ] ) ;
5354 setSkipPermissions ( settings . skipPermissions || false ) ;
55+ setProjectSortOrder ( settings . projectSortOrder || 'name' ) ;
5456 } else {
5557 // Set defaults
5658 setAllowedTools ( [ ] ) ;
5759 setDisallowedTools ( [ ] ) ;
5860 setSkipPermissions ( false ) ;
61+ setProjectSortOrder ( 'name' ) ;
5962 }
6063 } catch ( error ) {
6164 console . error ( 'Error loading tool settings:' , error ) ;
6265 // Set defaults on error
6366 setAllowedTools ( [ ] ) ;
6467 setDisallowedTools ( [ ] ) ;
6568 setSkipPermissions ( false ) ;
69+ setProjectSortOrder ( 'name' ) ;
6670 }
6771 } ;
6872
@@ -75,6 +79,7 @@ function ToolsSettings({ isOpen, onClose }) {
7579 allowedTools,
7680 disallowedTools,
7781 skipPermissions,
82+ projectSortOrder,
7883 lastUpdated : new Date ( ) . toISOString ( )
7984 } ;
8085
@@ -212,6 +217,56 @@ function ToolsSettings({ isOpen, onClose }) {
212217 </ div >
213218 </ div >
214219
220+ { /* Project Sorting */ }
221+ < div className = "space-y-4" >
222+ < div className = "flex items-center gap-3" >
223+ < FolderOpen className = "w-5 h-5 text-purple-500" />
224+ < h3 className = "text-lg font-medium text-foreground" >
225+ Project Sorting
226+ </ h3 >
227+ </ div >
228+ < div className = "bg-purple-50 dark:bg-purple-900/20 border border-purple-200 dark:border-purple-800 rounded-lg p-4" >
229+ < div className = "space-y-3" >
230+ < div className = "text-sm text-muted-foreground mb-3" >
231+ Choose how projects are sorted in the sidebar
232+ </ div >
233+ < div className = "flex gap-2" >
234+ < button
235+ onClick = { ( ) => setProjectSortOrder ( 'name' ) }
236+ className = { `flex-1 px-4 py-2 rounded-lg border transition-colors ${
237+ projectSortOrder === 'name'
238+ ? 'bg-purple-600 text-white border-purple-600'
239+ : 'bg-white dark:bg-gray-800 text-gray-700 dark:text-gray-300 border-gray-300 dark:border-gray-600 hover:bg-gray-50 dark:hover:bg-gray-700'
240+ } `}
241+ >
242+ < div className = "flex items-center justify-center gap-2" >
243+ < SortAsc className = "w-4 h-4" />
244+ < span > Sort by Name</ span >
245+ </ div >
246+ </ button >
247+ < button
248+ onClick = { ( ) => setProjectSortOrder ( 'date' ) }
249+ className = { `flex-1 px-4 py-2 rounded-lg border transition-colors ${
250+ projectSortOrder === 'date'
251+ ? 'bg-purple-600 text-white border-purple-600'
252+ : 'bg-white dark:bg-gray-800 text-gray-700 dark:text-gray-300 border-gray-300 dark:border-gray-600 hover:bg-gray-50 dark:hover:bg-gray-700'
253+ } `}
254+ >
255+ < div className = "flex items-center justify-center gap-2" >
256+ < SortAsc className = "w-4 h-4 rotate-180" />
257+ < span > Sort by Date</ span >
258+ </ div >
259+ </ button >
260+ </ div >
261+ < div className = "text-xs text-purple-700 dark:text-purple-300 mt-2" >
262+ { projectSortOrder === 'name'
263+ ? 'Projects are sorted alphabetically by name'
264+ : 'Projects are sorted by most recent session activity' }
265+ </ div >
266+ </ div >
267+ </ div >
268+ </ div >
269+
215270 { /* Allowed Tools */ }
216271 < div className = "space-y-4" >
217272 < div className = "flex items-center gap-3" >
0 commit comments