From b0137a2d1e40f9962aa73f300f25521793a18070 Mon Sep 17 00:00:00 2001 From: Valics Lehel Date: Mon, 14 Jul 2025 18:46:37 +0300 Subject: [PATCH 1/2] Update projects API and Sidebar component - Modified server/projects.js for improved functionality - Enhanced Sidebar.jsx component with new features --- server/projects.js | 42 ++++++++++++++++++++++++++++++-------- src/components/Sidebar.jsx | 13 +++++++++++- 2 files changed, 45 insertions(+), 10 deletions(-) diff --git a/server/projects.js b/server/projects.js index 793d07ed..8d0e0473 100755 --- a/server/projects.js +++ b/server/projects.js @@ -186,6 +186,17 @@ async function getProjects() { // Extract actual project directory from JSONL sessions const actualProjectDir = await extractProjectDirectory(entry.name); + // Check if CLAUDE.md exists in the project directory + let hasClaudeFile = false; + try { + const claudeMdPath = path.join(actualProjectDir, 'CLAUDE.md'); + await fs.access(claudeMdPath); + hasClaudeFile = true; + } catch (error) { + // File doesn't exist or can't be accessed + hasClaudeFile = false; + } + // Get display name from config or generate one const customName = config[entry.name]?.displayName; const autoDisplayName = await generateDisplayName(entry.name, actualProjectDir); @@ -197,6 +208,7 @@ async function getProjects() { displayName: customName || autoDisplayName, fullPath: fullPath, isCustomName: !!customName, + hasClaudeFile: hasClaudeFile, sessions: [] }; @@ -234,15 +246,27 @@ async function getProjects() { } } - const project = { - name: projectName, - path: actualProjectDir, - displayName: projectConfig.displayName || await generateDisplayName(projectName, actualProjectDir), - fullPath: actualProjectDir, - isCustomName: !!projectConfig.displayName, - isManuallyAdded: true, - sessions: [] - }; + // Check if CLAUDE.md exists in the project directory + let hasClaudeFile = false; + try { + const claudeMdPath = path.join(actualProjectDir, 'CLAUDE.md'); + await fs.access(claudeMdPath); + hasClaudeFile = true; + } catch (error) { + // File doesn't exist or can't be accessed + hasClaudeFile = false; + } + + const project = { + name: projectName, + path: actualProjectDir, + displayName: projectConfig.displayName || await generateDisplayName(projectName, actualProjectDir), + fullPath: actualProjectDir, + isCustomName: !!projectConfig.displayName, + hasClaudeFile: hasClaudeFile, + isManuallyAdded: true, + sessions: [] + }; projects.push(project); } diff --git a/src/components/Sidebar.jsx b/src/components/Sidebar.jsx index 1cca47ca..d6a377ca 100755 --- a/src/components/Sidebar.jsx +++ b/src/components/Sidebar.jsx @@ -4,7 +4,7 @@ import { Button } from './ui/button'; import { Badge } from './ui/badge'; import { Input } from './ui/input'; -import { FolderOpen, Folder, Plus, MessageSquare, Clock, ChevronDown, ChevronRight, Edit3, Check, X, Trash2, Settings, FolderPlus, RefreshCw, Sparkles, Edit2, Star, Search } from 'lucide-react'; +import { FolderOpen, Folder, Plus, MessageSquare, Clock, ChevronDown, ChevronRight, Edit3, Check, X, Trash2, Settings, FolderPlus, RefreshCw, Sparkles, Edit2, Star, Search, Info } from 'lucide-react'; import { cn } from '../lib/utils'; import ClaudeLogo from './ClaudeLogo'; import { api } from '../utils/api'; @@ -682,6 +682,11 @@ function Sidebar({ >
+ {!project.hasClaudeFile && ( +
+ +
+ )}
+ {!project.hasClaudeFile && ( + + )} {isExpanded ? ( ) : ( From eef327afc9f51adbbe5a45860705e61a2064bb29 Mon Sep 17 00:00:00 2001 From: Valics Lehel Date: Mon, 14 Jul 2025 19:07:58 +0300 Subject: [PATCH 2/2] Add icon guide to MainContent for better UX Added a visual guide explaining the purpose of each icon in the interface: - Folder+ for creating new projects - Refresh for reloading projects and sessions - Star for marking favorites - Edit for renaming projects - Info for projects missing CLAUDE.md file --- src/components/MainContent.jsx | 47 ++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/src/components/MainContent.jsx b/src/components/MainContent.jsx index 677248b9..fc1fd696 100755 --- a/src/components/MainContent.jsx +++ b/src/components/MainContent.jsx @@ -125,6 +125,53 @@ function MainContent({ 💡 Tip: {isMobile ? 'Tap the menu button above to access projects' : 'Create a new project by clicking the folder icon in the sidebar'}

+ + {/* Icon Guide */} +
+

Icon Guide

+
+
+
+ + + +
+ Folder+ - Create a new project +
+
+
+ + + +
+ Refresh - Reload projects and sessions +
+
+
+ + + +
+ Star - Mark project as favorite +
+
+
+ + + +
+ Edit - Rename project +
+
+
+ + + +
+ Info - Project missing CLAUDE.md file (run /init to create) +
+
+