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

@@ -17,6 +17,7 @@ export function useAutoMode() {
clearRunningTasks,
currentProject,
addAutoModeActivity,
maxConcurrency,
} = useAppStore(
useShallow((state) => ({
isAutoModeRunning: state.isAutoModeRunning,
@@ -27,9 +28,13 @@ export function useAutoMode() {
clearRunningTasks: state.clearRunningTasks,
currentProject: state.currentProject,
addAutoModeActivity: state.addAutoModeActivity,
maxConcurrency: state.maxConcurrency,
}))
);
// Check if we can start a new task based on concurrency limit
const canStartNewTask = runningAutoTasks.length < maxConcurrency;
// Handle auto mode events
useEffect(() => {
const api = getElectronAPI();
@@ -178,6 +183,8 @@ export function useAutoMode() {
return {
isRunning: isAutoModeRunning,
runningTasks: runningAutoTasks,
maxConcurrency,
canStartNewTask,
start,
stop,
};