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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user