mirror of
https://github.com/leonvanzyl/autocoder.git
synced 2026-01-30 22:32:06 +00:00
Major feature implementation for parallel agent execution with dependency-aware scheduling and an engaging multi-agent UI experience. Backend Changes: - Add parallel_orchestrator.py for concurrent feature processing - Add api/dependency_resolver.py with cycle detection (Kahn's algorithm + DFS) - Add atomic feature_claim_next() with retry limit and exponential backoff - Fix circular dependency check arguments in 4 locations - Add AgentTracker class for parsing agent output and emitting updates - Add browser isolation with --isolated flag for Playwright MCP - Extend WebSocket protocol with agent_update messages and log attribution - Add WSAgentUpdateMessage schema with agent states and mascot names - Fix WSProgressMessage to include in_progress field New UI Components: - AgentMissionControl: Dashboard showing active agents with collapsible activity - AgentCard: Individual agent status with avatar and thought bubble - AgentAvatar: SVG mascots (Spark, Fizz, Octo, Hoot, Buzz) with animations - ActivityFeed: Recent activity stream with stable keys (no flickering) - CelebrationOverlay: Confetti animation with click/Escape dismiss - DependencyGraph: Interactive node graph visualization with dagre layout - DependencyBadge: Visual indicator for feature dependencies - ViewToggle: Switch between Kanban and Graph views - KeyboardShortcutsHelp: Help overlay accessible via ? key UI/UX Improvements: - Celebration queue system to handle rapid success messages - Accessibility attributes on AgentAvatar (role, aria-label, aria-live) - Collapsible Recent Activity section with persisted preference - Agent count display in header - Keyboard shortcut G to toggle Kanban/Graph view - Real-time thought bubbles and state animations Bug Fixes: - Fix circular dependency validation (swapped source/target arguments) - Add MAX_CLAIM_RETRIES=10 to prevent stack overflow under contention - Fix THOUGHT_PATTERNS to match actual [Tool: name] format - Fix ActivityFeed key prop to prevent re-renders on new items - Add featureId/agentIndex to log messages for proper attribution Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
47 lines
1.4 KiB
TypeScript
47 lines
1.4 KiB
TypeScript
import { LayoutGrid, GitBranch } from 'lucide-react'
|
|
|
|
export type ViewMode = 'kanban' | 'graph'
|
|
|
|
interface ViewToggleProps {
|
|
viewMode: ViewMode
|
|
onViewModeChange: (mode: ViewMode) => void
|
|
}
|
|
|
|
/**
|
|
* Toggle button to switch between Kanban and Graph views
|
|
*/
|
|
export function ViewToggle({ viewMode, onViewModeChange }: ViewToggleProps) {
|
|
return (
|
|
<div className="inline-flex rounded-lg border-2 border-neo-border p-1 bg-white shadow-neo-sm">
|
|
<button
|
|
onClick={() => onViewModeChange('kanban')}
|
|
className={`
|
|
flex items-center gap-1.5 px-3 py-1.5 rounded-md font-medium text-sm transition-all
|
|
${viewMode === 'kanban'
|
|
? 'bg-neo-accent text-white shadow-neo-sm'
|
|
: 'text-neo-text hover:bg-neo-neutral-100'
|
|
}
|
|
`}
|
|
title="Kanban View"
|
|
>
|
|
<LayoutGrid size={16} />
|
|
<span>Kanban</span>
|
|
</button>
|
|
<button
|
|
onClick={() => onViewModeChange('graph')}
|
|
className={`
|
|
flex items-center gap-1.5 px-3 py-1.5 rounded-md font-medium text-sm transition-all
|
|
${viewMode === 'graph'
|
|
? 'bg-neo-accent text-white shadow-neo-sm'
|
|
: 'text-neo-text hover:bg-neo-neutral-100'
|
|
}
|
|
`}
|
|
title="Dependency Graph View"
|
|
>
|
|
<GitBranch size={16} />
|
|
<span>Graph</span>
|
|
</button>
|
|
</div>
|
|
)
|
|
}
|