diff --git a/src/shared/session-directory-resolver.test.ts b/src/shared/session-directory-resolver.test.ts index 717d9f90..da1903f0 100644 --- a/src/shared/session-directory-resolver.test.ts +++ b/src/shared/session-directory-resolver.test.ts @@ -15,6 +15,17 @@ describe("session-directory-resolver", () => { expect(result).toBe(true) }) + test("returns true when path ends with AppData directory segment", () => { + //#given + const directory = "C:/Users/test/AppData/Local" + + //#when + const result = isWindowsAppDataDirectory(directory) + + //#then + expect(result).toBe(true) + }) + test("returns false when path is outside AppData", () => { //#given const directory = "D:/projects/oh-my-opencode" @@ -25,6 +36,17 @@ describe("session-directory-resolver", () => { //#then expect(result).toBe(false) }) + + test("returns false for lookalike non-AppData segment", () => { + //#given + const directory = "D:/projects/appdata/local-tools" + + //#when + const result = isWindowsAppDataDirectory(directory) + + //#then + expect(result).toBe(false) + }) }) describe("resolveSessionDirectory", () => { diff --git a/src/shared/session-directory-resolver.ts b/src/shared/session-directory-resolver.ts index bc76f1a5..16d38944 100644 --- a/src/shared/session-directory-resolver.ts +++ b/src/shared/session-directory-resolver.ts @@ -1,4 +1,4 @@ -const WINDOWS_APPDATA_SEGMENTS = ["\\appdata\\local\\", "\\appdata\\roaming\\", "\\appdata\\locallow\\"] +const WINDOWS_APPDATA_SEGMENTS = ["\\appdata\\local", "\\appdata\\roaming", "\\appdata\\locallow"] function normalizeWindowsPath(directory: string): string { return directory.replaceAll("/", "\\").toLowerCase() @@ -6,7 +6,9 @@ function normalizeWindowsPath(directory: string): string { export function isWindowsAppDataDirectory(directory: string): boolean { const normalizedDirectory = normalizeWindowsPath(directory) - return WINDOWS_APPDATA_SEGMENTS.some((segment) => normalizedDirectory.includes(segment)) + return WINDOWS_APPDATA_SEGMENTS.some((segment) => { + return normalizedDirectory.endsWith(segment) || normalizedDirectory.includes(`${segment}\\`) + }) } export function resolveSessionDirectory(options: {