fix: keep tray session switches in sync

Open tray sessions from the correct directory
Allow remote instances to update the tray
Update the active project when switching sessions
This commit is contained in:
Bohdan Triapitsyn
2026-06-10 02:24:47 +03:00
parent b494dba8ed
commit e53c3da223
3 changed files with 15 additions and 3 deletions
+11
View File
@@ -442,6 +442,14 @@ export const useSessionUIStore = create<SessionUIState>()((set, get) => ({
)
const fallbackDir = opencodeClient.getDirectory() ?? directoryState.currentDirectory ?? null
const resolvedDir = (directoryHint ? normalizePath(directoryHint) : null) ?? sessionDir ?? fallbackDir
const projectsState = useProjectsStore.getState()
const sessionProject = resolvedDir
? resolveProjectForSessionDirectory(
projectsState.projects,
get().availableWorktreesByProject,
resolvedDir,
)
: null
// Set the directory together with the session id so chat hooks read the
// same child store that send/SSE events will update during startup races.
@@ -452,6 +460,9 @@ export const useSessionUIStore = create<SessionUIState>()((set, get) => ({
if (resolvedDir && directoryState.currentDirectory !== resolvedDir) {
directoryState.setDirectory(resolvedDir, { showOverlay: false })
}
if (sessionProject && projectsState.activeProjectId !== sessionProject.id) {
projectsState.setActiveProjectIdOnly(sessionProject.id)
}
opencodeClient.setDirectory(resolvedDir ?? undefined)
} catch (e) {
console.warn("Failed to set OpenCode directory for session switch:", e)