Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 24 additions & 3 deletions packages/opencode/src/session/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,21 @@ export namespace Session {
const parentTitlePrefix = "New session - "
const childTitlePrefix = "Child session - "

/**
* Normalize directory path for consistent comparison across platforms.
* On Windows, paths can have different representations (e.g., B: vs b:, / vs \).
* This function ensures consistent path comparison for session listing.
*/
function normalizeDirectory(dir: string): string {
// Normalize backslashes to forward slashes
let normalized = dir.replaceAll("\\", "/")
// Normalize drive letter to uppercase for case-insensitive comparison on Windows
if (process.platform === "win32") {
normalized = normalized.replace(/^([a-z]):/, (_, drive) => drive.toUpperCase() + ":")
}
return normalized
}

function createDefaultTitle(isChild = false) {
return (isChild ? childTitlePrefix : parentTitlePrefix) + new Date().toISOString()
}
Expand Down Expand Up @@ -89,7 +104,7 @@ export namespace Session {
workspace_id: info.workspaceID,
parent_id: info.parentID,
slug: info.slug,
directory: info.directory,
directory: normalizeDirectory(info.directory),
title: info.title,
version: info.version,
share_url: info.share?.url,
Expand Down Expand Up @@ -549,7 +564,10 @@ export namespace Session {
conditions.push(eq(SessionTable.workspace_id, WorkspaceContext.workspaceID))
}
if (input?.directory) {
conditions.push(eq(SessionTable.directory, input.directory))
// Normalize the directory path to handle Windows path variations
// (e.g., B: vs b:, / vs \)
const normalizedDir = normalizeDirectory(input.directory)
conditions.push(eq(SessionTable.directory, normalizedDir))
}
if (input?.roots) {
conditions.push(isNull(SessionTable.parent_id))
Expand Down Expand Up @@ -589,7 +607,10 @@ export namespace Session {
const conditions: SQL[] = []

if (input?.directory) {
conditions.push(eq(SessionTable.directory, input.directory))
// Normalize the directory path to handle Windows path variations
// (e.g., B: vs b:, / vs \)
const normalizedDir = normalizeDirectory(input.directory)
conditions.push(eq(SessionTable.directory, normalizedDir))
}
if (input?.roots) {
conditions.push(isNull(SessionTable.parent_id))
Expand Down
Loading