diff --git a/apps/ui/src/utils/router.ts b/apps/ui/src/utils/router.ts index c97f78b5..3e947042 100644 --- a/apps/ui/src/utils/router.ts +++ b/apps/ui/src/utils/router.ts @@ -1,10 +1,17 @@ -import { createRouter, createMemoryHistory } from "@tanstack/react-router"; +import { createRouter, createMemoryHistory, createBrowserHistory } from "@tanstack/react-router"; import { routeTree } from "../routeTree.gen"; +// Use browser history in web mode (for e2e tests and dev), memory history in Electron +const isElectron = typeof window !== "undefined" && window.electronAPI !== undefined; + +const history = isElectron + ? createMemoryHistory({ initialEntries: [window.location.pathname || "/"] }) + : createBrowserHistory(); + export const router = createRouter({ routeTree, defaultPendingMinMs: 0, - history: createMemoryHistory({ initialEntries: ["/"] }), + history, }); declare module "@tanstack/react-router" { diff --git a/apps/ui/tests/utils/git/worktree.ts b/apps/ui/tests/utils/git/worktree.ts index f8e6da5d..4680eae8 100644 --- a/apps/ui/tests/utils/git/worktree.ts +++ b/apps/ui/tests/utils/git/worktree.ts @@ -333,7 +333,7 @@ export async function setupProjectWithPath(page: Page, projectPath: string): Pro }, worktreesByProject: {}, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-storage", JSON.stringify(mockState)); @@ -346,7 +346,7 @@ export async function setupProjectWithPath(page: Page, projectPath: string): Pro currentStep: "complete", skipClaudeSetup: false, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-setup", JSON.stringify(setupState)); }, projectPath); @@ -381,7 +381,7 @@ export async function setupProjectWithPathNoWorktrees(page: Page, projectPath: s currentWorktreeByProject: {}, worktreesByProject: {}, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-storage", JSON.stringify(mockState)); @@ -394,7 +394,7 @@ export async function setupProjectWithPathNoWorktrees(page: Page, projectPath: s currentStep: "complete", skipClaudeSetup: false, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-setup", JSON.stringify(setupState)); }, projectPath); @@ -433,7 +433,7 @@ export async function setupProjectWithStaleWorktree(page: Page, projectPath: str }, worktreesByProject: {}, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-storage", JSON.stringify(mockState)); @@ -446,7 +446,7 @@ export async function setupProjectWithStaleWorktree(page: Page, projectPath: str currentStep: "complete", skipClaudeSetup: false, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-setup", JSON.stringify(setupState)); }, projectPath); diff --git a/apps/ui/tests/utils/project/fixtures.ts b/apps/ui/tests/utils/project/fixtures.ts index 9c71bab1..e1439199 100644 --- a/apps/ui/tests/utils/project/fixtures.ts +++ b/apps/ui/tests/utils/project/fixtures.ts @@ -94,7 +94,7 @@ export async function setupProjectWithFixture( chatHistoryOpen: false, maxConcurrency: 3, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-storage", JSON.stringify(mockState)); @@ -107,7 +107,7 @@ export async function setupProjectWithFixture( currentStep: "complete", skipClaudeSetup: false, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-setup", JSON.stringify(setupState)); }, projectPath); diff --git a/apps/ui/tests/utils/project/setup.ts b/apps/ui/tests/utils/project/setup.ts index 9d623b42..15e1e7fe 100644 --- a/apps/ui/tests/utils/project/setup.ts +++ b/apps/ui/tests/utils/project/setup.ts @@ -24,7 +24,7 @@ export async function setupMockProject(page: Page): Promise { chatHistoryOpen: false, maxConcurrency: 3, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-storage", JSON.stringify(mockState)); @@ -57,7 +57,7 @@ export async function setupMockProjectWithConcurrency( chatHistoryOpen: false, maxConcurrency: maxConcurrency, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-storage", JSON.stringify(mockState)); @@ -101,7 +101,7 @@ export async function setupMockProjectAtConcurrencyLimit( runningAutoTasks: runningTasks, autoModeActivityLog: [], }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-storage", JSON.stringify(mockState)); @@ -152,7 +152,7 @@ export async function setupMockProjectWithFeatures( autoModeActivityLog: [], features: mockFeatures, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-storage", JSON.stringify(mockState)); @@ -198,7 +198,7 @@ export async function setupMockProjectWithContextFile( chatHistoryOpen: false, maxConcurrency: 3, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-storage", JSON.stringify(mockState)); @@ -259,7 +259,7 @@ export async function setupMockProjectWithInProgressFeatures( autoModeActivityLog: [], features: mockFeatures, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-storage", JSON.stringify(mockState)); @@ -297,7 +297,7 @@ export async function setupMockProjectWithView( chatHistoryOpen: false, maxConcurrency: 3, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-storage", JSON.stringify(mockState)); @@ -321,7 +321,7 @@ export async function setupEmptyLocalStorage(page: Page): Promise { chatHistoryOpen: false, maxConcurrency: 3, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-storage", JSON.stringify(mockState)); }); @@ -361,7 +361,7 @@ export async function setupMockProjectsWithoutCurrent( chatHistoryOpen: false, maxConcurrency: 3, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-storage", JSON.stringify(mockState)); @@ -412,7 +412,7 @@ export async function setupMockProjectWithSkipTestsFeatures( autoModeActivityLog: [], features: mockFeatures, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-storage", JSON.stringify(mockState)); @@ -449,7 +449,7 @@ export async function setupMockMultipleProjects( chatHistoryOpen: false, maxConcurrency: 3, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-storage", JSON.stringify(mockState)); @@ -490,7 +490,7 @@ export async function setupMockProjectWithAgentOutput( chatHistoryOpen: false, maxConcurrency: 3, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-storage", JSON.stringify(mockState)); @@ -551,7 +551,7 @@ export async function setupMockProjectWithWaitingApprovalFeatures( autoModeActivityLog: [], features: mockFeatures, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-storage", JSON.stringify(mockState)); @@ -586,7 +586,7 @@ export async function setupFirstRun(page: Page): Promise { }, skipClaudeSetup: false, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-setup", JSON.stringify(setupState)); @@ -607,7 +607,7 @@ export async function setupFirstRun(page: Page): Promise { autoModeActivityLog: [], currentView: "setup", }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-storage", JSON.stringify(appState)); @@ -627,7 +627,7 @@ export async function setupComplete(page: Page): Promise { currentStep: "complete", skipClaudeSetup: false, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-setup", JSON.stringify(setupState)); @@ -732,7 +732,7 @@ export async function setupMockProjectWithProfiles( features: [], currentView: "board", // Start at board, will navigate to profiles }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-storage", JSON.stringify(mockState)); @@ -745,7 +745,7 @@ export async function setupMockProjectWithProfiles( currentStep: "complete", skipClaudeSetup: false, }, - version: 0, + version: 2, // Must match app-store.ts persist version }; localStorage.setItem("automaker-setup", JSON.stringify(setupState)); }, options);