Add concurrency slider for automode to control max parallel agents

- Added maxConcurrency state to app-store with persistence
- Created slider UI component using Radix UI
- Added concurrency slider to board-view header (left of Auto Mode button)
- Updated use-auto-mode hook to expose canStartNewTask based on limit
- Block dragging features to in_progress when at max concurrency
- Added test utilities for concurrency slider interactions

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Cody Seibert
2025-12-09 00:54:26 -05:00
parent 2822cdfc32
commit 479b2545e5
8 changed files with 466 additions and 4 deletions

View File

@@ -107,6 +107,7 @@ export interface AppState {
isAutoModeRunning: boolean;
runningAutoTasks: string[]; // Feature IDs being worked on (supports concurrent tasks)
autoModeActivityLog: AutoModeActivity[];
maxConcurrency: number; // Maximum number of concurrent agent tasks
}
export interface AutoModeActivity {
@@ -174,6 +175,7 @@ export interface AppActions {
clearRunningTasks: () => void;
addAutoModeActivity: (activity: Omit<AutoModeActivity, "id" | "timestamp">) => void;
clearAutoModeActivity: () => void;
setMaxConcurrency: (max: number) => void;
// Reset
reset: () => void;
@@ -200,6 +202,7 @@ const initialState: AppState = {
isAutoModeRunning: false,
runningAutoTasks: [],
autoModeActivityLog: [],
maxConcurrency: 3, // Default to 3 concurrent agents
};
export const useAppStore = create<AppState & AppActions>()(
@@ -417,6 +420,8 @@ export const useAppStore = create<AppState & AppActions>()(
clearAutoModeActivity: () => set({ autoModeActivityLog: [] }),
setMaxConcurrency: (max) => set({ maxConcurrency: max }),
// Reset
reset: () => set(initialState),
}),
@@ -430,6 +435,7 @@ export const useAppStore = create<AppState & AppActions>()(
apiKeys: state.apiKeys,
chatSessions: state.chatSessions,
chatHistoryOpen: state.chatHistoryOpen,
maxConcurrency: state.maxConcurrency,
}),
}
)