mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-03 21:03:08 +00:00
adding branch switcher support
This commit is contained in:
@@ -397,6 +397,19 @@ export interface AppState {
|
||||
// Worktree Settings
|
||||
useWorktrees: boolean; // Whether to use git worktree isolation for features (default: false)
|
||||
|
||||
// User-managed Worktrees (per-project)
|
||||
currentWorktreeByProject: Record<string, string | null>; // projectPath -> worktreePath or null for main
|
||||
worktreesByProject: Record<
|
||||
string,
|
||||
Array<{
|
||||
path: string;
|
||||
branch: string;
|
||||
isMain: boolean;
|
||||
hasChanges?: boolean;
|
||||
changedFilesCount?: number;
|
||||
}>
|
||||
>;
|
||||
|
||||
// AI Profiles
|
||||
aiProfiles: AIProfile[];
|
||||
|
||||
@@ -565,6 +578,25 @@ export interface AppActions {
|
||||
|
||||
// Worktree Settings actions
|
||||
setUseWorktrees: (enabled: boolean) => void;
|
||||
setCurrentWorktree: (projectPath: string, worktreePath: string | null) => void;
|
||||
setWorktrees: (
|
||||
projectPath: string,
|
||||
worktrees: Array<{
|
||||
path: string;
|
||||
branch: string;
|
||||
isMain: boolean;
|
||||
hasChanges?: boolean;
|
||||
changedFilesCount?: number;
|
||||
}>
|
||||
) => void;
|
||||
getCurrentWorktree: (projectPath: string) => string | null;
|
||||
getWorktrees: (projectPath: string) => Array<{
|
||||
path: string;
|
||||
branch: string;
|
||||
isMain: boolean;
|
||||
hasChanges?: boolean;
|
||||
changedFilesCount?: number;
|
||||
}>;
|
||||
|
||||
// Profile Display Settings actions
|
||||
setShowProfilesOnly: (enabled: boolean) => void;
|
||||
@@ -711,6 +743,8 @@ const initialState: AppState = {
|
||||
kanbanCardDetailLevel: "standard", // Default to standard detail level
|
||||
defaultSkipTests: true, // Default to manual verification (tests disabled)
|
||||
useWorktrees: false, // Default to disabled (worktree feature is experimental)
|
||||
currentWorktreeByProject: {},
|
||||
worktreesByProject: {},
|
||||
showProfilesOnly: false, // Default to showing all options (not profiles only)
|
||||
keyboardShortcuts: DEFAULT_KEYBOARD_SHORTCUTS, // Default keyboard shortcuts
|
||||
muteDoneSound: false, // Default to sound enabled (not muted)
|
||||
@@ -1302,6 +1336,34 @@ export const useAppStore = create<AppState & AppActions>()(
|
||||
// Worktree Settings actions
|
||||
setUseWorktrees: (enabled) => set({ useWorktrees: enabled }),
|
||||
|
||||
setCurrentWorktree: (projectPath, worktreePath) => {
|
||||
const current = get().currentWorktreeByProject;
|
||||
set({
|
||||
currentWorktreeByProject: {
|
||||
...current,
|
||||
[projectPath]: worktreePath,
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
setWorktrees: (projectPath, worktrees) => {
|
||||
const current = get().worktreesByProject;
|
||||
set({
|
||||
worktreesByProject: {
|
||||
...current,
|
||||
[projectPath]: worktrees,
|
||||
},
|
||||
});
|
||||
},
|
||||
|
||||
getCurrentWorktree: (projectPath) => {
|
||||
return get().currentWorktreeByProject[projectPath] ?? null;
|
||||
},
|
||||
|
||||
getWorktrees: (projectPath) => {
|
||||
return get().worktreesByProject[projectPath] ?? [];
|
||||
},
|
||||
|
||||
// Profile Display Settings actions
|
||||
setShowProfilesOnly: (enabled) => set({ showProfilesOnly: enabled }),
|
||||
|
||||
@@ -2159,6 +2221,8 @@ export const useAppStore = create<AppState & AppActions>()(
|
||||
autoModeByProject: state.autoModeByProject,
|
||||
defaultSkipTests: state.defaultSkipTests,
|
||||
useWorktrees: state.useWorktrees,
|
||||
currentWorktreeByProject: state.currentWorktreeByProject,
|
||||
worktreesByProject: state.worktreesByProject,
|
||||
showProfilesOnly: state.showProfilesOnly,
|
||||
keyboardShortcuts: state.keyboardShortcuts,
|
||||
muteDoneSound: state.muteDoneSound,
|
||||
|
||||
Reference in New Issue
Block a user