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

@@ -20,7 +20,32 @@ class SessionPicker {
async initialize() {
if (this.initialized) return;
// Check URL params first
console.log('[SessionPicker] initialize() called');
if (window.traceExecution) {
window.traceExecution('session-picker', 'initialize() called', { pathname: window.location.pathname });
}
// ============================================================
// FIRST: Check URL path for session ID (route-based: /claude/ide/session/XXX)
// This is the PRIMARY method for session attachment
// ============================================================
const pathname = window.location.pathname;
const pathMatch = pathname.match(/\/claude\/ide\/session\/([^\/]+)$/);
if (pathMatch && pathMatch[1]) {
const sessionId = pathMatch[1];
console.log('[SessionPicker] Session ID in URL path, NOT showing picker:', sessionId);
console.log('[SessionPicker] ide.js will handle attachment');
if (window.traceExecution) {
window.traceExecution('session-picker', 'URL path has session ID, NOT showing picker', { sessionId, pathname });
}
this.initialized = true;
return; // Don't show picker, let ide.js handle it
}
// ============================================================
// SECOND: Check URL params (legacy format: ?session=XXX)
// ============================================================
const urlParams = new URLSearchParams(window.location.search);
const sessionId = urlParams.get('session');
const project = urlParams.get('project');
@@ -28,6 +53,9 @@ class SessionPicker {
if (sessionId) {
// Load specific session
console.log('[SessionPicker] Loading session from URL:', sessionId);
if (window.traceExecution) {
window.traceExecution('session-picker', 'Loading session from query param', { sessionId });
}
await this.loadSession(sessionId);
this.initialized = true;
return;
@@ -36,12 +64,19 @@ class SessionPicker {
if (project) {
// Create or load session for project
console.log('[SessionPicker] Project context:', project);
if (window.traceExecution) {
window.traceExecution('session-picker', 'Project context', { project });
}
await this.ensureSessionForProject(project);
this.initialized = true;
return;
}
// No session or project - show picker
console.log('[SessionPicker] No session found, showing picker modal');
if (window.traceExecution) {
window.traceExecution('session-picker', 'SHOWING PICKER MODAL', { pathname, search: window.location.search });
}
await this.showPicker();
this.initialized = true;
}