Fix virtual workingDir handling in addSessionToProject

- Modified addSessionToProject to correctly extract projectKey from virtual workingDirs
- Virtual workingDir format: /virtual/projects/{projectKey}
- Previously was converting slashes to dashes, causing mismatch
- Added console logging to track session-to-project assignment

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
uroma
2026-01-22 14:44:08 +00:00
Unverified
parent 55aafbae9a
commit ec790a2de6
3 changed files with 62 additions and 39 deletions

View File

@@ -19,42 +19,47 @@ The issue: The left sidebar `loadChatHistory` function is being called in multip
1. Initial page load (no filter) - loads ALL sessions
2. When switching projects (with filter) - should load only project sessions
3. When sessions are created/updated
4. After archiving/unarchiving sessions
5. After resuming sessions
The problem is that `loadChatHistory` caches and reuses all sessions, and the filtering mechanism isn't working correctly.
The problem is that `loadChatHistory` caches and reuses all sessions, and the filtering mechanism wasn't working correctly.
## Progress
### Iteration 1 - Analysis - COMPLETED ✅
- Read all relevant files
- Identified the root cause
- Created fix plan
### Iteration 1 - Analysis & Initial Fix - COMPLETED ✅
**Changes Made:**
1. **Modified `loadChatHistory()` in chat-enhanced.js** (lines 71-100):
- Added check for `window.projectManager.activeProjectId`
- If active project exists, use `activeProject.sessions` instead of fetching from API
- This ensures that even when `loadChatHistory()` is called without parameters, it respects the active project
2. **Added detailed console logging** (lines 107-115):
- Logs which sessions are being rendered
- Shows workingDir, project metadata, and status for each session
- Helps debug any remaining issues
**Commit:** `55aafba` - "Fix project isolation: Make loadChatHistory respect active project sessions"
### Testing Required
1. Create a new project (e.g., 'roman')
2. Add a session to 'roman' project
3. Check if only 'roman' sessions appear in left sidebar
4. Switch to another project
5. Verify only that project's sessions appear
### Potential Issues to Watch
1. **Initial page load**: If project manager hasn't initialized yet, we might load all sessions briefly
2. **Session creation**: New sessions might not appear until project manager refreshes
3. **Project switching timing**: Race conditions between loadChatHistory calls
### Next Steps
1. Fix `loadChatHistory` to properly filter by project
2. Ensure sessions are tracked per project correctly
3. Test the fix
## Detailed Root Cause
Looking at `chat-enhanced.js` lines 64-81:
```javascript
if (sessionsToRender) {
// Use provided sessions (for project filtering)
allSessions = sessionsToRender;
} else {
// Fetch all sessions from API
const res = await fetch('/claude/api/claude/sessions');
// ... loads ALL sessions
}
```
The problem: When `loadChatHistory()` is called from `switchProject()` with `project.sessions`, it correctly uses those sessions. BUT there are other calls to `loadChatHistory()` throughout the code that don't pass the filter parameter, causing all sessions to load.
Also, the session tabs (`window.sessionTabs.setSessions`) are correctly updated but the left sidebar isn't properly isolated.
## Solution
The fix needs to:
1. Make `loadChatHistory` always respect the current project's sessions
2. Track which project is active globally
3. Filter sessions by the active project's workingDir or project ID
1. Test the current fix in browser
2. If issues remain, may need to:
- Add loading state to prevent showing wrong sessions during initialization
- Ensure project manager initializes before loadChatHistory runs
- Add event-based updates instead of polling