mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-03 21:03:08 +00:00
fix: use browser history in web mode for proper URL routing
The router was using memory history with initial entry "/" which caused all routes to render the index component regardless of the browser URL. Changes: - Use browser history when not in Electron (for e2e tests and dev) - Use memory history only in Electron environment - Update test utilities to use persist version 2 to match app store This fixes e2e tests that navigate directly to /board, /context, /spec 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -1,10 +1,17 @@
|
|||||||
import { createRouter, createMemoryHistory } from "@tanstack/react-router";
|
import { createRouter, createMemoryHistory, createBrowserHistory } from "@tanstack/react-router";
|
||||||
import { routeTree } from "../routeTree.gen";
|
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({
|
export const router = createRouter({
|
||||||
routeTree,
|
routeTree,
|
||||||
defaultPendingMinMs: 0,
|
defaultPendingMinMs: 0,
|
||||||
history: createMemoryHistory({ initialEntries: ["/"] }),
|
history,
|
||||||
});
|
});
|
||||||
|
|
||||||
declare module "@tanstack/react-router" {
|
declare module "@tanstack/react-router" {
|
||||||
|
|||||||
@@ -333,7 +333,7 @@ export async function setupProjectWithPath(page: Page, projectPath: string): Pro
|
|||||||
},
|
},
|
||||||
worktreesByProject: {},
|
worktreesByProject: {},
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
|
|
||||||
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
||||||
@@ -346,7 +346,7 @@ export async function setupProjectWithPath(page: Page, projectPath: string): Pro
|
|||||||
currentStep: "complete",
|
currentStep: "complete",
|
||||||
skipClaudeSetup: false,
|
skipClaudeSetup: false,
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
localStorage.setItem("automaker-setup", JSON.stringify(setupState));
|
localStorage.setItem("automaker-setup", JSON.stringify(setupState));
|
||||||
}, projectPath);
|
}, projectPath);
|
||||||
@@ -381,7 +381,7 @@ export async function setupProjectWithPathNoWorktrees(page: Page, projectPath: s
|
|||||||
currentWorktreeByProject: {},
|
currentWorktreeByProject: {},
|
||||||
worktreesByProject: {},
|
worktreesByProject: {},
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
|
|
||||||
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
||||||
@@ -394,7 +394,7 @@ export async function setupProjectWithPathNoWorktrees(page: Page, projectPath: s
|
|||||||
currentStep: "complete",
|
currentStep: "complete",
|
||||||
skipClaudeSetup: false,
|
skipClaudeSetup: false,
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
localStorage.setItem("automaker-setup", JSON.stringify(setupState));
|
localStorage.setItem("automaker-setup", JSON.stringify(setupState));
|
||||||
}, projectPath);
|
}, projectPath);
|
||||||
@@ -433,7 +433,7 @@ export async function setupProjectWithStaleWorktree(page: Page, projectPath: str
|
|||||||
},
|
},
|
||||||
worktreesByProject: {},
|
worktreesByProject: {},
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
|
|
||||||
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
||||||
@@ -446,7 +446,7 @@ export async function setupProjectWithStaleWorktree(page: Page, projectPath: str
|
|||||||
currentStep: "complete",
|
currentStep: "complete",
|
||||||
skipClaudeSetup: false,
|
skipClaudeSetup: false,
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
localStorage.setItem("automaker-setup", JSON.stringify(setupState));
|
localStorage.setItem("automaker-setup", JSON.stringify(setupState));
|
||||||
}, projectPath);
|
}, projectPath);
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ export async function setupProjectWithFixture(
|
|||||||
chatHistoryOpen: false,
|
chatHistoryOpen: false,
|
||||||
maxConcurrency: 3,
|
maxConcurrency: 3,
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
|
|
||||||
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
||||||
@@ -107,7 +107,7 @@ export async function setupProjectWithFixture(
|
|||||||
currentStep: "complete",
|
currentStep: "complete",
|
||||||
skipClaudeSetup: false,
|
skipClaudeSetup: false,
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
localStorage.setItem("automaker-setup", JSON.stringify(setupState));
|
localStorage.setItem("automaker-setup", JSON.stringify(setupState));
|
||||||
}, projectPath);
|
}, projectPath);
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ export async function setupMockProject(page: Page): Promise<void> {
|
|||||||
chatHistoryOpen: false,
|
chatHistoryOpen: false,
|
||||||
maxConcurrency: 3,
|
maxConcurrency: 3,
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
|
|
||||||
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
||||||
@@ -57,7 +57,7 @@ export async function setupMockProjectWithConcurrency(
|
|||||||
chatHistoryOpen: false,
|
chatHistoryOpen: false,
|
||||||
maxConcurrency: maxConcurrency,
|
maxConcurrency: maxConcurrency,
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
|
|
||||||
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
||||||
@@ -101,7 +101,7 @@ export async function setupMockProjectAtConcurrencyLimit(
|
|||||||
runningAutoTasks: runningTasks,
|
runningAutoTasks: runningTasks,
|
||||||
autoModeActivityLog: [],
|
autoModeActivityLog: [],
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
|
|
||||||
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
||||||
@@ -152,7 +152,7 @@ export async function setupMockProjectWithFeatures(
|
|||||||
autoModeActivityLog: [],
|
autoModeActivityLog: [],
|
||||||
features: mockFeatures,
|
features: mockFeatures,
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
|
|
||||||
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
||||||
@@ -198,7 +198,7 @@ export async function setupMockProjectWithContextFile(
|
|||||||
chatHistoryOpen: false,
|
chatHistoryOpen: false,
|
||||||
maxConcurrency: 3,
|
maxConcurrency: 3,
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
|
|
||||||
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
||||||
@@ -259,7 +259,7 @@ export async function setupMockProjectWithInProgressFeatures(
|
|||||||
autoModeActivityLog: [],
|
autoModeActivityLog: [],
|
||||||
features: mockFeatures,
|
features: mockFeatures,
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
|
|
||||||
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
||||||
@@ -297,7 +297,7 @@ export async function setupMockProjectWithView(
|
|||||||
chatHistoryOpen: false,
|
chatHistoryOpen: false,
|
||||||
maxConcurrency: 3,
|
maxConcurrency: 3,
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
|
|
||||||
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
||||||
@@ -321,7 +321,7 @@ export async function setupEmptyLocalStorage(page: Page): Promise<void> {
|
|||||||
chatHistoryOpen: false,
|
chatHistoryOpen: false,
|
||||||
maxConcurrency: 3,
|
maxConcurrency: 3,
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
||||||
});
|
});
|
||||||
@@ -361,7 +361,7 @@ export async function setupMockProjectsWithoutCurrent(
|
|||||||
chatHistoryOpen: false,
|
chatHistoryOpen: false,
|
||||||
maxConcurrency: 3,
|
maxConcurrency: 3,
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
|
|
||||||
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
||||||
@@ -412,7 +412,7 @@ export async function setupMockProjectWithSkipTestsFeatures(
|
|||||||
autoModeActivityLog: [],
|
autoModeActivityLog: [],
|
||||||
features: mockFeatures,
|
features: mockFeatures,
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
|
|
||||||
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
||||||
@@ -449,7 +449,7 @@ export async function setupMockMultipleProjects(
|
|||||||
chatHistoryOpen: false,
|
chatHistoryOpen: false,
|
||||||
maxConcurrency: 3,
|
maxConcurrency: 3,
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
|
|
||||||
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
||||||
@@ -490,7 +490,7 @@ export async function setupMockProjectWithAgentOutput(
|
|||||||
chatHistoryOpen: false,
|
chatHistoryOpen: false,
|
||||||
maxConcurrency: 3,
|
maxConcurrency: 3,
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
|
|
||||||
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
||||||
@@ -551,7 +551,7 @@ export async function setupMockProjectWithWaitingApprovalFeatures(
|
|||||||
autoModeActivityLog: [],
|
autoModeActivityLog: [],
|
||||||
features: mockFeatures,
|
features: mockFeatures,
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
|
|
||||||
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
||||||
@@ -586,7 +586,7 @@ export async function setupFirstRun(page: Page): Promise<void> {
|
|||||||
},
|
},
|
||||||
skipClaudeSetup: false,
|
skipClaudeSetup: false,
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
|
|
||||||
localStorage.setItem("automaker-setup", JSON.stringify(setupState));
|
localStorage.setItem("automaker-setup", JSON.stringify(setupState));
|
||||||
@@ -607,7 +607,7 @@ export async function setupFirstRun(page: Page): Promise<void> {
|
|||||||
autoModeActivityLog: [],
|
autoModeActivityLog: [],
|
||||||
currentView: "setup",
|
currentView: "setup",
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
|
|
||||||
localStorage.setItem("automaker-storage", JSON.stringify(appState));
|
localStorage.setItem("automaker-storage", JSON.stringify(appState));
|
||||||
@@ -627,7 +627,7 @@ export async function setupComplete(page: Page): Promise<void> {
|
|||||||
currentStep: "complete",
|
currentStep: "complete",
|
||||||
skipClaudeSetup: false,
|
skipClaudeSetup: false,
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
|
|
||||||
localStorage.setItem("automaker-setup", JSON.stringify(setupState));
|
localStorage.setItem("automaker-setup", JSON.stringify(setupState));
|
||||||
@@ -732,7 +732,7 @@ export async function setupMockProjectWithProfiles(
|
|||||||
features: [],
|
features: [],
|
||||||
currentView: "board", // Start at board, will navigate to profiles
|
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));
|
localStorage.setItem("automaker-storage", JSON.stringify(mockState));
|
||||||
@@ -745,7 +745,7 @@ export async function setupMockProjectWithProfiles(
|
|||||||
currentStep: "complete",
|
currentStep: "complete",
|
||||||
skipClaudeSetup: false,
|
skipClaudeSetup: false,
|
||||||
},
|
},
|
||||||
version: 0,
|
version: 2, // Must match app-store.ts persist version
|
||||||
};
|
};
|
||||||
localStorage.setItem("automaker-setup", JSON.stringify(setupState));
|
localStorage.setItem("automaker-setup", JSON.stringify(setupState));
|
||||||
}, options);
|
}, options);
|
||||||
|
|||||||
Reference in New Issue
Block a user