Fix project isolation: Make loadChatHistory respect active project sessions

- Modified loadChatHistory() to check for active project before fetching all sessions
- When active project exists, use project.sessions instead of fetching from API
- Added detailed console logging to debug session filtering
- This prevents ALL sessions from appearing in every project's sidebar

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
uroma
2026-01-22 14:43:05 +00:00
Unverified
parent b82837aa5f
commit 55aafbae9a
6463 changed files with 1115462 additions and 4486 deletions

View File

@@ -0,0 +1,154 @@
# Session Attachment Bug - Real-Time Monitoring Implementation
**Date:** 2025-01-22
**Status:** ✅ Real-time monitoring added
**Server PID:** 1725520
## The Bug (Persistent)
User flow: https://rommark.dev/claude/ > select folder > navigates to session URL > shows "No sessions yet"
## Previous Fixes Attempted
1. **Fix 1**: Modified `chat-functions.js` to check URL for session ID FIRST
- Moved `PRELOAD_SESSION_ID` check before session list rendering
- Result: Issue persists
2. **Fix 2**: Updated cache buster version to `1769079537621`
- Result: Issue persists
3. **Fix 3**: Updated script versions to `v1769079600000` and re-added `ide.js`
- Result: Issue persists
4. **Fix 4**: Found race condition - session-picker.js showing modal BEFORE ide.js attaches
- Modified session-picker to check URL path FIRST
- Result: Issue persists
## Current Approach: Real-Time Monitoring
Added comprehensive execution tracing to identify EXACTLY where the flow breaks.
### What Was Added
1. **Execution Trace Panel** (index.html lines 41-166)
- Green debug panel in top-right corner
- Shows colored trace of all execution events
- Displays timestamp, component, event, and data
- Auto-scrolls to show latest events
2. **Tracing Points Added**
**PRELOAD Script (index.html inline):**
```javascript
window.traceExecution('PRELOAD', 'Session ID extracted', { sessionId: sessionMatch[1] });
```
**ide.js:**
- `DOMContentLoaded fired` - When DOM ready
- `Using PRELOAD_SESSION_ID` - If using preload value
- `Extracted sessionId from URL path` - Fallback extraction
- `Set pendingSessionAttach flag` - Before switching view
- `switchView called` - View switching
- `Calling attachToSession` - Before attachment
**session-picker.js:**
- `initialize() called` - Component initialization
- `URL path has session ID, NOT showing picker` - Skip modal
- `SHOWING PICKER MODAL` - If showing modal (bug condition)
**chat-functions.js:**
- `loadChatView called` - View loading
- `Detected pendingSessionId` - Pending session from Sessions view
- `Pending session attachment detected - attaching IMMEDIATELY` - URL-based attachment
- `Called attachToSession successfully` - Attachment triggered
- `attachToSession START` - Beginning of attachment
- `attachToSession COMPLETE` - Attachment finished
### Expected Flow (When Working)
```
[PRELOAD] Session ID extracted
[Cache-Bust] Fresh load confirmed
[Init] Using PRELOAD_SESSION_ID: session-XXX
[Init] Set pendingSessionAttach: session-XXX
[SessionPicker] Session ID in URL path, NOT showing picker: session-XXX
[ide.js] switchView called: chat
[chat-functions] loadChatView called
[chat-functions] Pending session attachment detected - attaching IMMEDIATELY
[chat-functions] Called attachToSession successfully
[chat-functions] attachToSession START
[chat-functions] attachToSession COMPLETE
```
### If Bug Occurs
The trace panel will show WHERE the flow breaks. For example:
- If `[SessionPicker] SHOWING PICKER MODAL` appears → session-picker is NOT detecting the session
- If `[chat-functions] Pending session attachment detected` is missing → URL check failed
- If `attachToSession START` is missing → Function not called
## Testing Instructions
1. **Hard refresh browser**: `Ctrl+Shift+R` or `Cmd+Shift+R`
2. **Navigate to**: https://rommark.dev/claude/
3. **Click**: "Start New Session" → "Choose Folder"
4. **Select**: Any folder
5. **Click**: "Select Folder"
6. **Observe**: The green trace panel in top-right corner
7. **Note**: The exact sequence of events
## Version Information
- **Cache Buster:** 1769080500000
- **Script Versions:** v1769080500000
- **Server PID:** 1725520
- **Implementation Date:** 2025-01-22 11:48 UTC
## Files Modified
1. **`/home/uroma/obsidian-web-interface/public/claude-ide/index.html`**
- Added execution trace panel (lines 41-166)
- Updated PRELOAD script to call traceExecution()
- Updated all script versions to `v1769080500000`
- Updated cache buster version to `1769080500000`
2. **`/home/uroma/obsidian-web-interface/public/claude-ide/ide.js`**
- Added traceExecution() calls at key points:
- DOMContentLoaded
- PRELOAD_SESSION_ID usage
- URL path extraction
- pendingSessionAttach flag
- switchView call
- attachToSession call
3. **`/home/uroma/obsidian-web-interface/public/claude-ide/chat-functions.js`**
- Added traceExecution() calls at key points:
- loadChatView entry
- pendingSessionId detection
- URL-based session attachment
- attachToSession start
- attachToSession complete
4. **`/home/uroma/obsidian-web-interface/public/claude-ide/components/session-picker.js`**
- Already had traceExecution() calls from previous fix
## Next Steps
1. **User tests the flow** with the real-time monitoring enabled
2. **Review the trace output** to identify exact failure point
3. **Fix the actual root cause** based on trace data
4. **Verify fix works** and remove tracing if desired
## Auto-Fix Integration
The system also includes an Auto-Fix Logger that:
- Detects when session is in URL but not attached
- Automatically forces attachment
- Shows success/failure in bottom-right panel
- Can export diagnostic reports
## Related Files
- Ralph wrapper: `/home/uroma/obsidian-web-interface/bin/ralphloop`
- /ralph alias: `/home/uroma/.claude/skills/ralph/SKILL.md`
- Ralph integration: `/home/uroma/.claude/skills/brainstorming/ralph-integration.py`